【Java】继承和多态

本文介绍了Java中的继承和多态概念。讨论了父类与子类的关系,super关键字的应用,包括调用父类构造器和方法。还阐述了覆盖方法的规则,强调了静态方法不能被覆盖。多态特性使得父类引用可以指向子类对象,动态绑定决定了方法的调用基于对象的实际类型。此外,文章提到了对象转换、instanceof运算符以及可见性修饰符的作用。最后,探讨了如何使用final防止类被扩展和方法被覆盖。

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

父类和子类

关键字 extends
需要注意的几点
- 一个子类通常比父类包含更多的信息和方法
- 父类的私有数据域在该类之外是不可访问的
- 继承是用来为是关系建模的
- 多重继承:某些语言允许从几个类派生出一个子类。Java不允许多重继承,但是可以通过接口来实现

super关键字

  • 调用父类的构造方法
    super()
    super(parameters)
    • 要调用构造方法必须使用关键字super,并且这个调用必须是构造方法的第一条语句。在子类中调用父类构造方法的名字会引起一个语法错误。
    • 父类的构造方法不能被子类继承。
  • 调用父类的方法
    构造方法链:子类继承父类是,在执行子类构造方法之前,先执行完父类的构造方法,直至最后一个构造方法被调用为止

覆盖方法

子类需要修改父类定义的方法的实现。
- 仅当实例方法是可访问时,才能被覆盖。
- 静态方法也能被继承,但是不能被覆盖。如果父类中定义的静态方法在子类红被重新定义,那么定义在父类中的静态方法将被隐藏。

多态

父类型的变量可以引用子类型的对象。

动态绑定

  • 声明类型
    一个变量必须被声明为某种类型。
  • 实际类型
    被变量引用的对象的实际类。
    一个对象要调用的方法,要由它的实际类型所决定,这就是动态绑定。

对象转换和instanceof运算符

  • 隐式转换
    子类的实例可以赋值给父类引用对象,通过隐式转换。
  • 显示转换
    要把一个父类的实例转换为它的子类变量时,必须使用转换几号(子类名)进行显式转换。
    可以在转换之前,通过方法instanceof()来判断一个对象是不是某个类的实例。

可见性修饰符

类中成员的修饰符在同一类中可访问在同一包内可访问在子类内可访问在不同包可访问
public
protected
(default)
private

子类可以覆盖它的父类的protected方法,并把它的可见性改为public。但是,子类不能削弱父类中定义的方法的可访问性。

防止扩展和覆盖

使用final修饰符表明一个类是终极的,是不能被作为父类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值