java的面向对象编程(oop)——认识多态

发布时间:2024年01月25日

前言:

整理下相关知识点,打好基础,daydayup!

多态?

1,什么是多态?

多态是在继承/实现情况下的一种现象,表现为:对象多态,行为多态

2,什么是对象多态,行为多态?

对象可以指向不同的对象,同一种行为有不同的状态

(形象点可这样理解,对象多态指一个人的身份既可以是老师,也可以是学生;行为多态指跑步这个动作,有人跑得快,有人跑得慢)

例:人对象既可以指向老师类,也可以指向学生类(对象多态)。老师类和学生类都有不同的run方法(行为多态)

people a1 = new teacher();
a1.run();
people a2 = new student();
a2.run();

?3.多态的优势

1,在多态形式下,右边对象是解耦合的,便于扩展和维护(当右边对象不好用时,可以直接更换)

2,使用父类类型的变量作为方法形参时,可以接受一切子类对象

?例:形参为people时,可以接受学生及老师对象

4.多态的劣势

没有办法直接调用子类独有的方法(因为多态在调用方法时,只会看父类里的方法)

5.类型转换

由于多态的劣势,子类独有办法没办法调用,所以需要使用强制类型转换来尽心调用。

类型转换有两种

1,自动类型转化:父类 变量名 = new 子类();

从大范围到小范围,可以直接转换

2 强制类型转换: 子类 变量名 = (子类)父类变量名;

例:可以把people变量转换成学生变量,并调用学生类里独有的方法。

?但由于一些语法逻辑,强转是一定可以运行的,但如果出现了错误,java不会警告提醒,但会在运行时提示ClassCastException(强制类型转换异常)这项错误

所以强转前,可用instanceof来判断是否异常 : 变量 instanceof 类

例:判断q变量是学生变量,还是老师变量,如果判断成功就进行类型转换

整理结束,撒花!!!?

?

文章来源:https://blog.csdn.net/l822099133/article/details/135832183
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。