java的三大特征之一----多态

1.什么是多态?

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

2.对象多态:

对象多态可以通俗理解为:父类可以是任意子类(有一个父类:people类,两个子类 :student类,teacher类)

其代码表现:People p1 = new student();    People p2 = new teacher();

此时:就是说人既可以是学生,也可以是老师;这就是对象多态的表现;

3.行为多态:

行为多态可以通俗的理解为:同一行为下的不同状态

比如说 :定义一个方法 work(),人的内容是:生活 ,学习,工作;老师的内容是:工作;学生的内容是:学习;

那么其中就需要对老师和学生类中的work方法进行重写;

4.多态有什么好处:

1多态是解耦合(也叫松耦合)的;因此更有利于 扩展和维护 [*解耦合*:通俗的理解是“可拆卸的”,对于可优化的部分,或者说可修改的部分,可以单独进行]

比如:People p1 = new student(); 以下的代码可以不用变,直接把student换为worker,doctor……;

2)定义方法的时候,可以把父类的对象变量作为参数,那么就可以接收父类下的一切对象,扩展性更强;

5.多态的弊端:

多态下是不能使用子类的独有功能(方法)的;

独有方法:就是在子类中 另外 构造的方法;但是不包括重写的方法,就是说重写的方法也属于共同方法;

6.如何解决《多态时调用子类的独有方法》?

类型转换:

java的三大特征之一----多态_第1张图片

错误:ClassCastException:

java的三大特征之一----多态_第2张图片

其实这里就是 :父类可以向子类强制类型转换,但是子类之间不可以转换;

如何解决ClassCastException?

用instanceof

1.instanceof什么用?instanceof是一个用来判断当前对象的真实类型;

2.instanceof怎么用?eg:

java的三大特征之一----多态_第3张图片

这里就是通过判断对象p的真实类型是不是Student,是就执行if下语句;不是就执行else下语句;

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