super关键字
一、super 关键字概述super代表父类对象的引用专门用于子类中访问父类的内容和this对比记忆this代表当前本类对象访问本类的成员super代表父类对象访问父类的成员注意super 只能在子类中使用只能作用于非静态方法 / 构造方法中static 静态方法里不能写 super。二、super 的三种用法1. super. 成员变量访问父类的成员变量当子类和父类出现同名成员变量成员变量重名直接写变量名优先使用子类自己的使用super.变量名强制拿父类的变量。class Father{ int num 100; //父类成员变量 } class Son extends Father{ int num 200; //子类同名成员变量 public void show(){ System.out.println(num); //直接写优先子类输出200 System.out.println(this.num); //this. 本类对象子类输出200 System.out.println(super.num);//super. 父类对象父类输出100 } } public class Test{ public static void main(String[] args) { Son s new Son(); s.show(); } }重点阐释子类变量和父类重名时会发生变量隐藏子类会把父类同名变量遮挡住想要拿到父类的变量就必须加super.。2. super. 成员方法访问父类的成员方法子类重写父类方法之后如果想要在子类中调用父类原本的方法逻辑用super.方法名()。场景重写之后不想完全抛弃父类原有逻辑在父类功能基础上做扩展。class Animal{ public void eat(){ System.out.println(动物吃东西); } } class Dog extends Animal{ //子类重写eat方法 Override public void eat() { super.eat(); //调用父类eat原有逻辑 System.out.println(小狗啃骨头);//子类新增逻辑 } } public class Test2{ public static void main(String[] args) { Dog dog new Dog(); dog.eat(); /*输出 动物吃东西 小狗啃骨头 */ } }3. super ()调用父类的构造方法super()用来在子类构造方法中调用父类的构造方法。语法super(实参列表);硬性规则super () 必须写在子类构造方法的第一行不手动写 super ()编译器会默认自动赠送无参 super ()调用父类无参构造如果父类没有无参构造子类必须手动写带参super(参数)指定调用父类有参构造否则编译报错。class Person{ String name; //父类有参构造写了之后父类不再提供默认无参构造 public Person(String name){ this.name name; } } class Student extends Person{ int id; //子类构造 public Student(String name,int id){ //必须第一行手动调用父类有参构造否则报错 super(name); this.id id; } public void show(){ System.out.println(姓名super.name 学号this.id); } } public class Test3{ public static void main(String[] args) { Student stu new Student(张三,2026001); stu.show(); } }三、this () 和 super () 对比写法作用位置限制this()调用本类其他构造方法构造方法第一行super()调用父类构造方法构造方法第一行⚠️重要禁忌this()和super()不能同时写在同一个构造方法内两者都要求放在第一行会发生冲突。四、this 与 super 完整对比总结关键字指代对象使用位置作用this当前本类对象普通方法、构造方法访问本类变量、本类方法、调用本类其他构造super父类对象引用子类普通方法、子类构造方法访问父类变量、父类方法、调用父类构造五、高频易错点初学者必看super 不是对象只是父类对象的引用标记不能写Super s super;拿来赋值给变量static 静态方法不能使用 super、this静态属于类没有对象super () 只写在构造方法第一行普通成员方法里面不能写不带点的super()父类如果没有无参构造子类一定手动super(参数)否则编译报错。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →