继承、super、this关键字

本文详细解析了Java中的继承概念,包括子类如何继承父类的特征和行为,以及this和super关键字的使用。介绍了继承的is-a关系,Java的单继承特性,子类对象实例化过程,以及this和super在调用构造器和方法中的作用。

继承概念:
1.继承就是子类继承父类的特征和和行为,使得子类对象(实例)具有父类的实例域和方法,还可以以基础添加新方法和域来满足需求。
2.继承需要符合的关系是:is-a,父类更通用,子类更具体。
3.java不支持多继承,即一个子类只能拥有一个父类。
4.子类对象实例化时一定先实例化父类对象。
5.java中,所有继承都是公有继承,子类拥有父类非private属性和方法。
6.已存在类:父类,超类,基类,新生类:子类,派生类,孩子类。
格式:
class 父类 {
}

class 子类 extends 父类 {
}
this概念:
1.是引用隐式参数。
2.是调用该类其他构造器。
图解:
在这里插入图片描述
super概念:
1.调用父类的方法。
2.调用父类的构造器。
3.通过super关键字来实现对父类成员的访问,用来引用当前对象的父类,super与this引用不是类似的概念,因为super不是一个对象引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字,super指向父类,this是指向自己的引用。

### Java 中 `super` 关键字使用方法 #### 子类中调用父类方法或变量 在Java继承体系里,`super`关键字用于访问父类(超类)的成员。这包括调用父类方法以及访问其段。当存在同名的情况下,即子类重写了父类方法或是定义了与父类相同的段名称时,可以通过`super`来明确指定要操作的是来自父类的那个版本[^1]。 ```java class Parent { protected String name; public Parent(String name) { this.name = name; } public void showName() { System.out.println("Parent's Name is " + name); } } class Child extends Parent { private String name; public Child(String parentName, String childName) { super(parentName); // 调用父类构造器并传递参数给它 this.name = childName; // 初始化自己的name属性 } @Override public void showName() { super.showName(); // 显示父类的名 System.out.println("Child's Name is " + this.name); // 显示自身的名 } } ``` 上述例子展示了如何利用`super()`去执行父级构造函数,并且也说明了怎样借助于`super.method()`的形式来触发被覆盖掉的方法实现[^2]。 #### 调用父类的构造方法 每当创建一个新的子类实例的时候,默认情况下都会先尝试自动调用无参形式的父类构造器;但如果父类并没有提供这样的默认构造器,则需要显式地通过`super(...)`语句来进行匹配性的调用。需要注意的一点是,这种对于父类构造器的调用必须放在子类构造体内的最前面位置上[^5]。 ```java // 假设有一个没有无参构造器的父类 public class Vehicle { final int wheels; public Vehicle(int numberOfWheels) { wheels = numberOfWheels; } } // 那么它的子类就必须这样写: public class Car extends Vehicle { public Car() { super(4); // 必须作为第一条语句出现 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值