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

前言:

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

多态 

1,什么是多态?

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

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

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

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

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

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

 3.多态的优势

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

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

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

java的面向对象编程(oop)——认识多态_第1张图片

4.多态的劣势

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

5.类型转换

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

类型转换有两种

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

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

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

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

java的面向对象编程(oop)——认识多态_第2张图片

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

java的面向对象编程(oop)——认识多态_第3张图片

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

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

java的面向对象编程(oop)——认识多态_第4张图片

整理结束,撒花!!! 

 

你可能感兴趣的:(java,开发语言)