内容:
1、this和super作用
2、继承关系图
1、this和super作用
this和super的作用:
- this:区分本类中的成员变量和局部变量同名的情况,代指本类
- super:区分子类中的成员变量和父类中的成员变量,代指父类
this和super调用普通成员与构造方法:
1 // 调用普通成员: 2 this.成员变量 可以访问本类对象的成员变量 3 super.成员变量 可以访问父类对象的成员变量 4 5 this.成员方法() 可以访问本类对象的成员方法 6 super.成员方法() 可以访问父类对象的成员方法 7 8 使用this找本类,如果子类没有找父类 9 使用super找父类,如果父类没有不会去找子类 10 11 // 调用构造方法: 12 this(其他参数) 可以访问本类其他的构造方法 13 super(其他参数) 可以访问父类其他的构造方法 14 15 // 默认子类调用父类构造方法: 16 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super();
this调用构造方法:
1 public class Person { 2 private int age; 3 public Person(){ 4 this(15);//这句话调用 下面带int参数构造 5 } 6 public Person(int age){ 7 this.age = age; 8 } 9 public int getAge() { 10 return age; 11 } 12 public void setAge(int age) { 13 this.age = age; 14 } 15 } 16 /* 17 * this调用本类中的其他构造方法 18 * 注意:this()语句形式必须写在构造方法的第一行 19 */ 20 public class Test { 21 public static void main(String[] args) { 22 Person p = new Person(); 23 int a = p.getAge(); 24 System.out.println(a); 25 } 26 }
super调用构造方法:
1 // 注:子类的每个构造方法中均有默认的super(),调用父类的空参构造 2 public class Fu { 3 int a; 4 public Fu(){ 5 System.out.println("父类的构造方法"); 6 } 7 public Fu(int a){ 8 this.a = a; 9 } 10 11 } 12 13 public class Zi extends Fu{ 14 public Zi(){ 15 super(666); 16 System.out.println("子类的构造方法"); 17 } 18 } 19 public class Test { 20 public static void main(String[] args) { 21 new Zi(); // 匿名对象 22 } 23 }
2、继承关系图
1 //定义父类 2 public class Person { 3 private String name; 4 private int age; 5 6 public Person(){} 7 public Person(String name,int age) { 8 this.name = name; 9 this.age = age; 10 } 11 // get/set方法 12 } 13 14 //定义子类 15 public class Chinese extends Person{ 16 private String address; 17 public Chinese(){} 18 public Chinese(String name,int age,String address) { 19 super(name,age); 20 this.address = address; 21 } 22 // 对address的get/set 23 } 24 25 26 //定义测试类,使用子类创建对象 27 public class Test{ 28 Chinese c = new Chinese(“AngelaBaby”,18,”北京海淀区上地软件园”); 29 }