上海尚学堂,实战教学

it2025-08-12  9

概述

多态 polymorphism,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有 在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。

java中如何实现多态?使用多态的好处?

引用变量的两种类型: • 编译时类型(模糊一点,一般是一个父类)

​ • 由声明时的类型决定。

​ • 运行时类型(运行时,具体是哪个子类就是哪个子类)

​ • 由实际对应的对象类型决定。

多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象

代码

这里没有写

引用数据类型的类型转换

• 子类转换为父类:自动转换

​ 上转型对象不能操作子类新增的成员变量和方法。

​ 上转型对象可以操作子类继承或重写的成员变量和方法

​ 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。

• 父类转换为子类:强制转换

(绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误

抽象类

概述

使用了关键词 abstract 声明的类叫作”抽象类”。

抽象类是对抽象的世界建模,是作为父类使用的。比如: 请求出一个图形的面积? 这是你的思考究竟是什么图形?这个图形太抽象了?是三角形还是原型?图形怎么求面积?这个时候就可以把图形定义为抽象类。

几个要点

抽象方法和抽象类均必须用abstract来修饰。抽象方法没有方法体,只需要声明不需实现。有抽象方法的类只能定义能抽象类 。相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。抽象类可以包含属性、方法、构造方法。抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。抽象类只能用来继承。抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽 象类。

代码

这里没有写

接口

概述

​ 接口(interface ),比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专 业地实现了:规范和具体实现的分离

如何定义

• 格式:

​ • [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {

​ • 常量定义 //总是public static final

​ • 方法定义 //总是:public abstract •

​ }

如何实现

子类通过implements来实现接口中的规范接口不能创建实例,但是可用于声明引用变量类型。一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。Java的类只支持单继承,接口支持多继承

空接口

只是给 JVM 的一种标识而已,就是 JVM 的通行证。 1)、java.lang.Cloneable :不是所有的对象都可以被克隆 否则CloneNotSupportedException 2)、java.io.Serializable

实际开发中,一个业务逻辑处理类永远不要去继承一个实现好的类,要么继承抽象类,要么实现接口,优先使用接口,避免单继承的局限 :abstract class表示的是"is a"关系,interface表示的是"like a"关系

最新回复(0)