java之路 super
1 /* 2 super关键字: 3 4 super关键字代表了父类空间的引用。 5 6 super关键字的 作用: 7 1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。 8 2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。 9 10 super关键字调用父类构造方法要注意的事项: 11 1. 如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上面加上super()语句。 12 2. super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。 13 3. super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。 14 15 16 super关键字与this关键字的区别: 17 1. 代表的事物不一致。 18 1. super关键字代表的是父类空间的引用。 19 2. this关键字代表的是所属函数的调用者对象。 20 2. 使用前提不一致。 21 1. super关键字必须要有继承关系才能使用。 22 2. this关键字不需要存在继承关系也可使用。 23 3. 调用构造函数的区别: 24 1. super关键字是调用父类的构造函数。 25 2. this关键字是调用本类的构造函数。 26 */ 27 class Fu{ 28 29 int x = 10; 30 31 String name; 32 33 34 public Fu(){ 35 System.out.println("Fu类无参的构造方法.."); 36 } 37 38 public Fu(String name){ 39 this.name = name; 40 System.out.println("Fu类带参的构造方法.."); 41 } 42 43 44 public void eat(){ 45 System.out.println("小头爸爸吃番薯.."); 46 } 47 } 48 49 50 class Zi extends Fu{ 51 52 int x = 20; 53 54 int num; 55 56 public Zi(String name,int num){ 57 super(name); //指定调用了父类带参的 构造方法... 58 this(); // 调用本类无参构造方法.. 59 //super(); //指定调用了父类无参构造方法。。。 60 System.out.println("Zi类带参的构造方法.."); 61 } 62 63 public Zi(){ 64 System.out.println("Zi类无参的构造方法.."); 65 } 66 67 68 public void print(){ 69 System.out.println("x = " +super.x); 70 } 71 72 public void eat(){ 73 System.out.println("大头儿子吃龙虾.."); 74 } 75 } 76 77 class Demo9 { 78 79 public static void main(String[] args) 80 { 81 Zi z = new Zi("狗娃"); 82 83 84 } 85 }