- this和super的区别:
- this:代表当前类的对象的引用
- super:父类存储空间的标识,可理解为父类的引用,可以操作父类的成员
- 用法:
- A:调用成员变量
- this.成员变量 ===>调用的是本类对象的成员变量
- super.成员变量 ===>调用的是父类的成员变量
- B:调用构造方法
- this(...) 调用的是本类的构造方法
- super(...) 在本类方法中调用父类的构造方法
- C:调用成员方法
- this.成员方法 ===>调用的是本类对象的成员方法
- super.成员方法 ===>调用的是父类的成员方法 ,用于在子类中调用父类的方法
- Ø 继承中构造方法之间的关系:
-
- A:子中所有的构造方法都会默认访问父类中无参的构造方法。
- 原因:
- 因为子类会继承父类中的数据,可能还会使用父类中的数据,所以子类对象在初始化之前必须对父类的数据初始化,系统默认子类所有构造方法的第一句都是super();
-
- B:父类中有带参构造方法,而没有无参构造方法时,编译报错
- 解决方法:
- A:父类中加入无参构造方法
- B:用super(参数列表); 显示调用父类中带参的构造方法
- C:子类通过this调用本类的其它构造方法,通过其它构造方法中的super(参数列表)来完成父类的初始化
- 注意:
- A:无论哪种方法,都必须要访问父类的构造方法,即父类都必须初始化
- B:this或super调用构造方法时,必须放在第一条语句上,否则可能对父类进行多次初始化
复制代码 |