【Java基础知识】继承体系中的成员关系,this,super关键字的使用,数据初始化

本文详细解析了Java中的继承机制,包括成员变量、构造方法和成员方法的访问规则,以及this和super关键字的区别与应用。同时,介绍了类的初始化过程、构造执行顺序及分层初始化等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Java继承体系中成员的关系【成员变量、构造函数、成员方法】

A:成员变量

子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问呢?
        子类的方法访问变量的查找顺序
        ①在子类方法的局部范围找,有就使用。
        ②在子类的成员范围找,有就使用。
        ③在父类的成员范围找,有就使用。
        ④找不到,就报错。

B:构造方法(构造函数的目的是初始化对象)

            a:子类的构造方法默认会去访问父类的无参构造方法, 是为了子类访问父类数据的初始化。   
            b:父类中如果没有无参构造方法,怎么办?
               ①子类通过super去显示调用父类的带参构造。
               ②子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造,让父类提供无参构造。

       ③在父类中添加一个无参构造。

注意事项:

①如果子类没有显式调用父类的构造函数,则默认调用父类的无参构造。

②子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化。子类可能会用到父类中的数据。

③this(...)或者super(...)必须出现在第一条语句上。如果不是放在第一条语句,就可能对父类数据进行了多次初始化,所以必须放在第一条语句。

class Father{
	public Father(){
		System.out.println("Father的无参构造");
	}
	public Father(String name){
		System.out.println("Father的有参构造");
	}	
}
class Son extends Father{
	public Son(){
		super("userName");
		System.out.println("Son的无参构造");
	}
	public Son(String name){
		this();
		System.out.println("Son的有参构造");
	}
}
public class ExtendsDemo {
	public static void main(String[] args) {
		Son s1 = new Son();
		System.out.println("----------------");
		Son s2 = new Son("userName");
	}
}
/*
	Father的有参构造
	Son的无参构造
	----------------
	Father的有参构造
	Son的无参构造
	Son的有参构造
 * */

C:成员方法。

子类的成员方法和父类中的成员方法名称一样,这个怎么访问呢?
通过子类对象访问一个方法的查找顺序:
①在子类中找,有就使用。
②在父类中找,有就使用。
③找不到,就报错。

二、this和super的区别和各自的作用?

this代表本类对应的引用

super代表父类存储空间的标识【可以理解为父类的引用可以操作父类的成员】

A:调用成员变量

this.成员变量, 调用本类的成员变量。

super.成员变量,调用父类的成员变量。

B:调用构造方法

this(...),调用本类的构造方法。

super(...),调用父类的构造方法。

C:调用成员方法

this.成员方法,调用本类的成员方法。

super.成员方法,调用父类的成员方法。


三、数据初始化:一个类的初始化过程、子父类的构造执行过程、分层初始化

①子父类的初始化【分层进行的】:先进行父类的初始化,然后进行子类的初始化。

②单个类的初始化顺序:

a、成员变量的初始化:默认初始化->显式初始化->构造函数初始化



示例二:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值