Java基础 — 继承、多态与抽象类

继承

多个类有共同的成员变量和成员方法,将其抽取到另外一个类中,此类即为父类。
再让多个类去继承这个父类,则产生继承动作的子类就可以获取父类中的成员。
关键词:extends

继承——成员变量的特点

  1. Java中只能继承1个父类(1个儿子只能有1个亲爹)
  2. Java中允许多层继承(1个儿子,1个亲爹,1个亲爷爷)
  3. 子类只能获取父类中非私有成员
  4. 变量就近原则:谁离我近,我就用谁。eg:
    有局部变量,直接用局部变量
    无局部变量,有子类的成员变量,就用子类成员变量
    无局部变量,无子类成员变量,有父类成员变量,就用父类成员变量
    super:获取父类的成员变量和成员方法,用法与this类似。

继承——成员方法的特点

  1. 方法的重写:在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法后,使用子类对象调用的就是子类的方法。
  2. 方法的重载:在一个类中,有多个重名的方法,但是其参数不一样(参数个数,参数类型,参数顺序),和返回值无关
  3. 方法重写的应用场景:当父类的方法不能完全满足子类使用,这时候就需要重写父类的方法,并可以使用关键字super调用父类的方法(既可以保有父类的功能,也可以拥有子类特有的功能)。
  4. 方法重写的注解:@override,先输入@后,按住“alt”+“/”即可调出。不能重写父类私有的方法。子类修饰权限要>=父类的修饰权限,如子类方法修饰用public,父类用default。

继承——继承中构造方法的执行顺序

在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法,如果子类构造方法的第一行没有调用父类的构造方法,则会默认调用父类的无参构造方法。总结一句就是,肯定会执行父类的构造方法,因为要给父类的成员变量初始化

this 和 super 的区别

this

当前对象的引用:

  1. 调用子类的成员变量
  2. 调用子类的成员方法
  3. 在子类构造方法第一行调用子类其他构造方法

super

子类对象的父类引用

  1. 调用父类的成员变量
  2. 调用父类的成员方法
  3. 在子类的构造方法第一行调用父类构造方法

继承的优缺点

优点:

  1. 提高了代码的复用性
  2. 提高了代码的可维护性
    缺点:
  3. 类的耦合性增强了。

抽象类

abstract修饰方法和类

抽象方法

不同类的方法是相似的,但是具体内容又不太一样,所有只能抽取方法的声明,因此没有具体的方法体,没有具体方法体的方法就是抽象方法

抽象类

有抽象方法的类,必须是抽象类
一个类继承了抽象类,就需要重写抽象类中所有的抽象方法,否则这个类就得是抽象类

抽象类的特点

  1. 抽象方法只能在抽象类里面
  2. 抽象类和抽象方法必须被abstract修饰
  3. 抽象类不能创建对象(不能实例化),需要子类继承后重写即实例化
  4. 抽象类中可以有非抽象的方法
  5. 抽象类和类的关系是继承——要么子类重写所有抽象方法,要么自己变成抽象类

抽象类的成员特点

  1. 成员变量:可以有成员变量,可以有常量(final修饰,final可以修饰类、成员变量和成员方法)
  2. 成员方法:可以有抽象方法,可以有非抽象方法
  3. 构造方法:可以有构造方法,给成员变量初始化

抽象类的细节

  1. abstract不可以final共存
  2. 抽象类中可以有构造函数,虽不能实例化,但是有成员变量可以进行初始化操作
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值