Java的继承

继承是Java语言的特性,那么什么是继承,它的特性是什么?有哪些需要注意的细节呢?

1.继承(extends):将类与类之间的共性描述进行提取形成新的类,这时类与类之间就产生了关系。形成的顶层类叫做父类,被抽取的类叫做子类,而子类与父类的关系就叫做继承,这时只要子类继承父类就拥有了父类的共性属性,由此提高了代码的复用性。需要注意的是Java不支持多继承,这是因为如果一个子类同时继承多个父类而父类中定义了相同功能但功能内容不同时,子类对象调用时不知道要运行哪一个,由此带来安全隐患。

2.如何使用继承体系中的功能?

Java中当要使用一个继承体系功能时,这时首先应该查阅API文档中的顶层功能描述,这时因为父类中定义的都是继承体系中最基本的功能,挡在具体的对象调用时,应该建立子类的对象,这是因为父类有可能不能创建对象(父类有可能是抽象类或接口),再者子类中出了继承了父类的基本功能外,有可能还增加了额外的功能。

3.继承体系出现后子父类成员的特点。

(1)成员变量与super:当子父类中出现重名成员变量时,这时若要访问父类的成员变量需要用到super关键字,和this相似super代表父类的空间,值得一提的是继承体系中子类之所以能够访问父类是因为子类在加载时默认持有super。

(2)成员函数:当子类方法和父类一模一样时,当子类对象在调用此方法时会运行子类的内容就如同父类的方法被子类覆盖了一样,这个特性叫做覆写。当父类的某个方法不适合于子类本身的特征行为时就覆写父类中的方法。子类在覆盖父类的方法时必须保证子类的权限大于父类权限否则覆盖失败,静态方法只能覆盖静态。

4.构造方法的转变:在子类的对象进行初始化时,默认父类的构造方法也会运行,因为子类的构造方法默认第一行有一条默认的super语句,而子类初始化时之所以要访问父类是因为子类对象在创建时要首先查看父类对初始化都进行了哪些操作,当然如果父类有多条构造方法时可以手动的用super(参数)进行加载。

5.一个对象的初始化过程:

首先jvm会读取指定目录下的class文件,并将其加载进内存,若有父类会先加载父类的文件,接着会在堆内存中开辟空间,分配地址,并且在对象的空间中对对象进行默认的初始化。接下来系统会调用相应的构造函数对其进行初始化,在构造函数中默认的第一行会有默认的super所以会先到父类的构造函数中进行初始化,父类完毕后会对子类进行显示初始化,进行子类构造函数初始化,所有初始化完成后将地址赋给引用变量。

6.final和static

static关键字可以修饰变量和程序块以及类方法:当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存;修饰一个程序块的时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化;当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象。
final可以修饰变量、方法及类,当你定义一个final变量时程序不可改变其值相当于一个定值;当你定义一个方法时,改方法在子类中将不能被重写;当你修饰一个类时,该类不能被继承。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值