Java 继承和多态知识点总结

继承定义:是一种关系,子类和父类之间的关系,扩充一个类已有的功能。
优点:
父类定义公共内容,方便统一修改。
整体减少了代码量。
添加新类方便。

子类和父类是:is - a关系
语法:class 子类 extends 父类(){ }
子类不可以继承父类的构造方法,只可以调用父类的构造方法。

作用域 当前类 同包 子类 其他
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
知识点:
子类又被称为派生类。
父类又被称为超类。
在一个子类继承的时候,实际上会继承父类中的所有操作(属性、方法)但是要注意的是,对于所有的非私有操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)

 对于Hero类中nickName这个私有属性无法直接访问,但是可以通过继承过来的get和set方法间接的进行操作
 在继承关系中如果要实例化子类对象会先默认调用父类构造,为父的属性初始化,之后再调用子类构造为子类的属性初始化

继承内存的分配: 栈内存中先开辟一个warrior实例对象 然后在堆中先去调用父类构造 然后再实例化子类然后再调用子类构造

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

小结:
使用super关键字调用父类构造方法 使用super关键字调用父类构造方法时需要放在第一条
默认会先调用父类构造,在调用子类构造
构造方法不可继承
Java中只能继承一个父类
父类私有属性在子类中不能直接调用
继承关系是一种包含关系 父类和子类必须存在包含关系
所有类直接或间接的继承Object类 如果一个类没有使用extends关键字则直接默认继承Object类
父类通用,子类具体
如果子类的构造器没有显式的调用超类构造器,则将自动的调用超类默认无参构造,如果超类没有无参构造且子类的构造器中也没有显式地调用超类的的其他构造器 则编译器会报错

方法重写
定义:当子类定义了和父类在方法名称,返回值类型,参数类型及个数完全相同的方法的时候,称为方法重写。
@override称之为重写标注,用来保证重写的方法与原来的方法的签名的返回值一致
使用了private定义的操作都无法真正的被重写(隐性属性)
知识点
如果定义类时没有明确指明父类,父类默认为object
toString方法:为了适用于所有子类那么在toString默认情况下就是输出对象地址,当然子类可以重写方法自己定义。

多态

             多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

同一种事物在不同条件下的不同状态
好处:可以增强程序的扩展性及可维护性,使代码更加简洁。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值