Java面向对象——继承

Java面向对象——继承

继承

继承是指这样一种能力:

  • 它可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展。
  • 通过继承创建的新类称为「子类」或「派生类」,被继承的类称为「基类」、「父类」或「超类」

extends 继承

  • Java : 采用单继承,使用树状结构进行类的管理
  • Java中 Object 是所有类的 父类
  • C++、Python:采用多继承,形成的是网状结构

字类可以继承父类中定义的 公开的 或者 受保护的 属性方法

public class Cat extends Animal{
}

super 关键字

  • super 代表超级的意思,调用父类的信息
  • super 可以调用父类的属性和方法,和 this 用法一致
  • super 还可以调用父类的构造方法,用法和this调用构造方法一致

方法的重写

当父类中,提供的方法,不满足 字类的需求的时候
那么字类可以重写父类的方法,这种现象被称为方法的重写/覆盖
方法的重写主要体现的程序的可扩展性

* 方法重写的限制:字类能够继承的方法,才可以重写 * 

方法重写的要求

  • a)、权限修饰符和父类保持相同,或者比父类的权限更高

  • b)、方法的返回值类型,方法名,参数列表必须和父类完全一致

  • c)、异常的处理和父类相同,或者比父类抛出的异常更窄

    * @Override  可以检查方法是否满足重写的要求,可加可不加 *
    * idea 可以使用 ctrl + o 快捷键快速重写方法
    

多态

多态:将子类对象赋值给字类的引用,调用父类的方法,显示了字类的效果,这种现象称为多态
多态会导致子类对象向上转型
向上转型会导致子类的特性丢失

  • 如果需要显示子类的特性,需要做向下转型
  • 如果确实需要向下转型,需要用到强制类型转换
  • 强转有风险
  • 如果不确定类型,添加判断语句,配合强转
  • 语法:对象 instanceof 类型是不是
JDK 16 新特性
final 修饰符
  • 用final 修饰的类,不能被继承
  • 用final 修饰的方法,不能被重写
static静态方法
  • 不能被重写,没有多态
sealed密封类
  • permits 允许
  • public sealed class Animal permits Dog , Cat{} :定义一个 密封类 Animal, 只允许 Dog, Cat 继承
  • 继承 sealed 类的 子类 必须是 final 或者 sealed
  • sealed 必须定义需要继承的 子类

Abstract 抽象类

  • 抽象方法:只是提供一个标准,没有具体的方法
  • 抽象类用 abstract 修饰
  • 抽象类 中不一定有抽象方法,抽象类可以没有子类
  • 如果一个类中有抽象方法,那么这个类必须定义为抽象类
  • 抽象类不能创建对象、但有构造方法

在这里插入图片描述

abstractstaticfinal 修饰符

  • abstract 和 final 修饰符 不能同时修饰类

abstract 修饰的是内部类 可以被继承,final 修饰的类不能被继承

  • abstract 和final 修饰符 不能同时修饰方法

abstract 修饰的方法子类中要进行重写,final 修饰的方法不能被重写

  • abstract 和static 可以同时修饰类
  • abstract 和 static 不能同时修饰方法

abstract 修饰的方法可以被重写,static修饰的方法不能被重写,没有多态

  • static 和final 能同时修饰类,属性 和方 法

匿名内部类

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值