Java基础 -- 抽象、接口、多态

一、抽象

1. 抽象方法

由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个分号结尾。

2. 抽象类

一个类中如果包含抽象方法,该类应该用 abstract 关键字声明为抽象类。
如果一个类继承了抽象类,必须重写其抽象方法除非该类也声明为抽象类)。
在这里插入图片描述

  • 抽象类不可以实例化
  • 即使一个类中没有抽象方法,也可以将其定义为抽象类
  • abstract 和 final 关键字不可以同时用于修饰一个类,因为 final 关键字使得类不可继承,而 abstract 修饰的类如果不可以继承将没有任何意义。

3. 抽象类的继承

一个类继承抽象类后,必须重写其抽象方法,不同的子类可以有不同的实现。
在这里插入图片描述

4. 抽象类的意义

  • 为其子类提供一个公共的类型;
  • 封装子类中的重复内容(成员变量和方法);
  • 定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。

二、接口

1. 定义

接口可以看成是特殊的抽象类,即只包含有抽象方法的抽象类。
在这里插入图片描述

2. 接口的实现

一个类可以通过 implements 关键字“实现”接口,一个类实现了某个接口后必须实现该接口中定义的所有方法。
与继承不同,一个类可以实现多个接口,实现的接口直接用逗号分隔。当然,该类需要实现这些接口中定义的所有方法
接口可以作为一种类型声明变量,一个接口类型的变量可以引用实现了该接口的类的对象,通过该变量可以调用该接口中定义的方法(具体的实现类提供了方法的实现)。
在这里插入图片描述在这里插入图片描述

3. 接口的继承

接口间可以存在继承关系,一个接口可以通过extends关键字继承另外一个接口。子接口继承了父接口中定义的所有方法。
在这里插入图片描述

三、多态

1. 定义

多态是同一个行为具有多个不同表现形式或形态的能力。在程序中表现为同一个引用类型,使用不同的实例而执行不同操作,即父类引用,子类对象。

2. 多态的意义

  • 一个类型的引用在指向不同的对象时会有不同的实现
    在这里插入图片描述
  • 同样一个对象,造型成不同的类型时,会有不同的功能
    在这里插入图片描述

3. 使用多态实现思路

  • 编写父类
  • 编写子类,子类重写父类方法
  • 运行时,使用父类的类型,子类的对象

实现多态的两个要素:方法重写、使用父类类型。

4. 向上造型

一个类的对象可以向上造型的类型有:

  • 父类的类型
  • 其实现的接口类型

Java编译器根据类型检查调用方法是否匹配。

5. 强制转型

  • 可以通过强制转换将父类型变量转换为子类型变量,前提是该变量指向的对象确实是该子类类型。
  • 也可通过强制转换将变量转换为某种接口类型,前提是该变量指向的对象确实实现了某接口。
    在这里插入图片描述

如果在强制转换过程中出现违背了上述两个前提,将会抛出 ClassCastException 。

6. instanceof 关键字

6.1 用法

对象 instanceof 类或接口

6.2 作用

该关键字用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值