Java类之继承

面向对象 --继承

一、继承的现实意义

同类事物中一般性与特殊性的关系

一般性的事物类 -->父类/超类(super class)
特殊性的实物类–>子类 (subclass)
可以理解为一般性的事物包含特殊性的事物 ->包含关系

二、java中继承的实现和继承的特点

子类 extends 父类
特点1: 子类继承父类后,自动获得了父类中定义的所有特征
子类可以扩展自己“特殊性”的特征
特点2:一个父类允许有多个子类
一个子类只能有一个直接的父类,可以有多个间接的父类
单继承: 一个子类只能有一个直接的父类
特点3:java.lang.Object类
如果一个类没有指定父类,它默认以Object类为父类
如果一个类写明父类,它不再直接继承Object类,会间接继承
—> Object类是所有类的父类
—> Object类代表的是“引用数据类型”的意思

三、继承的内存模型

创建一个子类的实例时,隐式地在内存中会创建一个隶属于该子类实例的父类实例。

四、继承关系中构造方法的调用

核心:子类必须在构造方法的第一句通过super()调用父类的构造方法
super:子类实例中寄生的父类实例
通过super先构建出寄生的父类实例,再构建自己的实例
两者结合得到完整的子类实例的内存空间

如果子类的构造方法,没有在第一句显式调用super();
默认调用父类的无参构造方法

一般来说每一个类都会写一个默认的无参构造方法。来方便其他的调用

如果父类中没有无参构造方法,子类必须显式调用。

五、引用数据类型的类型转换规则

前提:引用数据类型之间的转换必须发生在有继承关系的两个类型之间
(1)上溯造型 (子类实例 -> 父类对象) 自动转换
Bird() Animal a
现实意义:将一个子类的个体(Bird实例)当作一个普通的动物个体看待,忽视子类个体的特殊性(忽视Bird实例的特性),只强调做为动物的一般特性

(2)下溯造型(父类对象 -> 子类对象)强制转换
Animal -> Bird
-> Fish

父类对象可以强制转换成子类的对象,前提是该父类对象是由该子类预先实例化的

情况1: 父类对象Animal() -> Bird b
Animal a = new Animal();
Bird b = (Bird)a; //转换失败:ClassCastException

情况2: 父类对象Fish() -> Bird b
Animal a = new Fish();
Bird b = (Bird)a; //转换失败:ClassCastException

情况3: 父类对象Bird() -> Bird b
Animal a = new Bird();
Bird b = (Bird)a;

x instanceof Class:判断对象x是否为类Class的实例。

(2) 上溯造型(父类对象->子类对象) 强制转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值