关于super

关于 super

super关键字

super.成员变量; //父类继承下来的成员变量

super( …); //调用父类的构造方法

super.成员方法();//调用父类继承下来的成员方法

总结注意点:
1.super为父类超类的引用,我们可以把super当作父类的一个实例(实际上并不是实例,这样便于理解)
2.子类在初始化时一定会先执行父类的构造函数,不管是显式还是隐式,这是必须的!
3.父类有参时,super必须要显式调用且参数正确;无参时可隐式调用或显式调用不带参的super();
4. 第二种理解为 super.方法()或者super.属性 调用
5. 若子类重写,需添加一些功能,则要用到super,再次调用父类方法,使其保留,否则重写就把父类的方法都删掉了。(看个人需求)
6.父类的构造函数带参,子类的构造函数可以不带参.但是父类如果为被直接调用则必须有默认参数,否则报错"未找到基类构造函数的默认参数";
7.子类可以直接super(“nickro”)传给父类参数;
8.super关键字可以理解成父类的实例,比如父类有方法father();则可以直接super.father();调用父类方法,同时子类重写了father方法的话,也可以以此来分别获得子类和父类的father方法的调用;

在面向对象编程中,`super` 关键字确实用于引用当前对象的父类部分,而不是创建一个独立的父类对象实例。它指向的是子类对象中继承自父类的那一部分内存空间,使得可以在子类中访问被覆盖的父类成员变量或方法[^1]。 ### `super` 的主要用途 1. **访问被覆盖的父类成员** 当子类与父类存在同名字段或方法时,可以通过 `super` 显式访问父类版本。例如: ```java public class Base { int value = 10; void display() { System.out.println("Base display"); } } public class Derived extends Base { int value = 20; void show() { System.out.println(super.value); // 输出 10 super.display(); // 调用 Base 的 display 方法 } } ``` 上述代码中,`super.value` 和 `super.display()` 分别访问了父类 `Base` 中的字段和方法[^4]。 2. **调用父类构造方法** 在子类构造器中可以使用 `super()` 来显式调用父类的构造方法。如果未显式调用,则系统会默认调用父类无参构造方法;若父类没有无参构造方法,将导致编译错误。 ```java public class Parent { public Parent(String name) { // 构造逻辑 } } public class Child extends Parent { public Child() { super("default"); // 必须显式调用父类有参构造方法 } } ``` 此处通过 `super("default")` 调用了父类带参数的构造函数[^5]。 3. **避免歧义** 在子类中访问成员时,若存在与父类同名的字段或方法,Java 默认访问子类自己的成员。此时可以通过 `super` 指定访问父类版本以避免歧义。 ```java public class Animal { String type = "Animal"; } public class Dog extends Animal { String type = "Dog"; void printType() { System.out.println(super.type); // 输出 "Animal" } } ``` 这种方式有助于明确区分父子类中的相同名称成员[^2]。 ### 注意事项 - **`super` 不代表独立的父类对象** 它并不指向一个实际的父类对象实例,而是子类对象内部继承自父类的部分。这意味着它不会创建一个新的父类对象,也不会占用额外的内存空间[^1]。 - **不能在静态上下文中使用** 由于 `super` 是对当前对象父类部分的引用,而静态方法不属于任何对象实例,因此无法通过 `super` 访问父类成员[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值