super详解
super注意点:
- super调用父类的构造方法,必须在构造方法的第一行
- super 必须也只能出现在子类的方法或者构造方法中!
- super 和 this 不能同时调用构造方法!因为this 和 super都必须在方法的第一行。
super VS this
- 代表的对象不同:
- this:本身调用者这个对象
- super:代表父类对象的应用
- 前提:
- this:没有继承也可以使用
- super:只能在继承条件才可以使用
- 构造方法:
- this() :本类的构造
- super() :父类的构造!
代码实现
-
super和this的区别:
// 父类 public class Person { public String name = "小卤蛋"; public void print(){ System.out.println("Person"); } } // 子类 public class Student extends Person{ private String name = "鲁班七号"; public void test(String name){ // 输出name的方法 System.out.println(name); System.out.println(this.name); System.out.println(super.name); } public void print(){ System.out.println("Student"); } public void test2(){ // 输出方法 print(); this.print(); super.print(); } } // main方法 public static void main(String[] args) { Student student = new Student(); student.test("鲁班七号"); student.test2(); }
总结:这里可以看出this是调用自己,super是调用父类。
-
super 和 this 的优先级:
总结:super 和 this 不能同时调用构造方法!因为this 和 super都必须在方法的第一行。
-
调用super,必须要有无参构造。(设置一个有参构造,就默认干掉了无参构造)
-
因为父类里面把无参构造干掉了,所以子类不可以调用。
总结:调用super,父类必须有无参构造。
相关文章
暂无评论...