1、this和super都代表了什么
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
2、this和super的使用区别
a、调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量。
b、调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类类符构造方法‘
c、调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类符成员方法
super.成员方法 调用父类的成员方法
3、继承中构造方法的关系
子类中所有的构造方法默认都会访问父类中空参的构造方法
为什么?
因为之类会继承父类中的数据,可能还会使用父类的数据,所以,之类初始化之前,一定要先完成父类数据的初始化。
其实,每一个构造方法的第一条语句默认都是:super()。
4、继承中构造方法的注意事项
super(...)或this(...)必须出现在构造方法的第一条语句上。两者是不能同时出现在同一段代码块的。
* 父类没有无参构造方法,子类怎么办?
* super解决
* this解决
class Demo6_Extends {
public static void main(String[] args) {
Son s1 = new Son();
System.out.println(s1.getName() + "..." + s1.getAge());
System.out.println("--------------------");
Son s2 = new Son("张三",23);
System.out.println(s2.getName() + "..." + s2.getAge());
}
}
/*
* A:案例演示
* 父类没有无参构造方法,子类怎么办?
* super解决
* this解决
* B:注意事项
* super(⋯)或者this(⋯.)必须出现在构造方法的第一条语句上
*/
class Father {
private String name; //姓名
private int age; //年龄
public Father() { //空参构造
System.out.println("Father 空参构造");
}
public Father(String name,int age) { //有参构造
this.name = name;
this.age = age;
System.out.println("Father 有参构造");
}
public void setName(String name) { //设置姓名
this.name = name;
}
public String getName() { //获取姓名
return name;
}
public void setAge(int age) { //设置年龄
this.age = age;
}
public int getAge() { //获取年龄
return age;
}
}
class Son extends Father {
public Son() { //空参构造
this("王五",25); //本类中的构造方法
//super("李四",24); //调用父类中的构造方法
System.out.println("Son 空参构造");
}
public Son(String name,int age) { //有参构造
super(name,age);
System.out.println("Son 有参构造");
}
}