欢迎光临散文网 会员登陆 & 注册

Java笔记--多态

2023-09-04 20:41 作者:爪哇岛江户川  | 我要投稿

一、多态介绍

同一个行为具有多个不同表现形式或形态的能力。


二、多态前提

1、有继承/实现关系

2、有方法重写

3、有父类引用指向子类对象

我们在这里创建一个抽象类和两个子类,然后子类将父类方法重写。

接着我们用父类引用指向子类对象

我们可以发现,左右两边的类型并不相同但是并没有报错。

三、多态的好处

1、对象多态:

前面我们用父类引用可以指向子类对象就是对象多态的一个例子。

2、行为多态:

我们在主方法下面创建一个新的方法,然后将方法的形参设置为父类对象。

然后我们将两个子类对象分别传入父类方法中

发现方法中可以接收两种子类对象。


四、多态中成员访问特点

1、成员变量:编译看左边(父类),运行看左边(父类)

我们先创建一个父类和一个子类,将父类中的num定义为10,将子类中的num定义为20,然后我们用父类引用去指向子类对象,然后打印出对象num变量的值。

我们会看到,打印出的num值是父类中的值。

2、成员方法:编译看左边(父类),运行看右边(子类)

我们用对象去调用成员方法

发现结果走的是子类的成员方法

因为程序会担心调用的父类的方法是一个抽象方法,所以会走子类的重写方法。

3、特殊情况:

前面我们说过建议被static修饰的成员变量和成员方法,建议使用类名去调用。在多态中假如我们去使用对象名调用静态的static成员方法,程序会运行父类的方法,因为在字节码文件生成之后,程序会自动将对象名改为类名去调用。

五、多态的好处和弊端

1、好处:提高了程序的扩展性

2、弊端:不能使用子类特有的成员

六、多态中的转型

1、向上转型

从子到父:父类引用指向子类对象

将子类对象的地址赋值给父类引用

2、向下转型

从父到子:将父类引用所指的对象,转交给子类类型。

这里不能直接赋值,必须做强制类型转换。

七、注意事项:

当我们用转型去调用对象的方法时,很容易报错,因为我们不能判断这个对象是不是这个类的成员。

我们可以利用if语句和instanceof关键字来判断左边的引用是不是右边的数据类型。


Java笔记--多态的评论 (共 条)

分享到微博请遵守国家法律