Java 继承(扩展)

什么是继承?extends 其实是扩展的意思继承是类与类之间的一种关系,对某一批类中共有的方法和属性进行共性抽取,抽取出来的这个类也就是被继承的类称之为:父类 / 基类 / 超类;继承的类称之为:子类 / 派生类为什么要使用继承?(或者说使用继承解决了什么问题?提高代码复用率继承是多态的前提,没有继承即没有多态。继承设计规范子类们相同特征(共性属性、共性方法)放在父类中定义,子类独有的属性和行为应该定义在子类自己里面。为什么这样做?
摘要由CSDN通过智能技术生成

1、简单介绍

什么是继承?extends 其实是扩展的意思

继承是类与类之间的一种关系,对某一批类中共有的方法和属性进行共性抽取,抽取出来的这个类也就是被继承的类称之为:父类 / 基类 / 超类;继承的类称之为:子类 / 派生类

为什么要使用继承?(或者说使用继承解决了什么问题?)

提高代码复用率

继承是多态的前提,没有继承即没有多态。

继承设计规范

子类们相同特征(共性属性、共性方法)放在父类中定义,子类独有的属性和行为应该定义在子类自己里面。

为什么这样做?

如果子类的独有属性、行为定义在父类中,会导致其他子类也会得到这些属性和行为,这不符合面向对象逻辑。

2、特点

  • java 语言是单继承的,不是多继承,但是可以多层继承。

    • 例如:A 继承 B,B 继承 C,C 再继承 D,……,X 继承 Object 类。
  • 一个子类的直接父类是唯一的,但是一个父类可以拥有很多个子类。

    • java 中所有的类都直接或间接继承自 Object(祖宗类)。
  • 在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当作父类看待。

    • 关系:is-a。
    • 例如:父类是员工,子类是讲师,那么“讲师就是一个员工”。
  • 继承当中子类可以拥有父类的“内容”, 子类还可以拥有自己专有的内容。

  • 子类只能从被扩展的父类获得成员变量、方法和内部类(包括内部接口、枚举),不能获得构造器和初始化块。

3、语法格式

定义父类的格式和定义一个普通的类没有区别

  • 定义子类的格式:
public class 子类名称 extends 父类名称{
   
      // ...
}

4、成员的访问特点

子类和父类中成员变量重名的访问特点

在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问的规则是:

等号左边是谁,就优先用谁,没有则向上找。

子类和父类中成员方法重名的访问特点(对于非静态方法)

创建的对象是谁,就优先用谁,没有则向上找。

该方法属于谁时,先看子类中有没有,没有则向上找,不能去其他子类中找。

子类是否可以继承父类的私有成员变量?

  • 可以的,只是不能直接访问,可以在父类中设置相应的方法,在子类中进行访问。

子类是否可以继承父类的静态成员?

  • 有争议的知识点。
  • 子类可以直接使用父类的静态成员(共享)。
  • 但个人认为:子类不能继承父类的静态成员。(共享并非继承)。

对静态和非静态方法的测试:

// 父类
public class Fu {
   

	public static void print() {
   
		System.out.println("Fu==>print()");
	}

	public void show() {
   
		System.out.pr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值