- 前言
- 一、多态是什么?
- 二、从实例理解多态
- 总结
前言
继承关系表示:子类可以继承父类的全部特征并加入一些新的特征,从一个普遍宽泛的类变成一个特殊的类。
那么多态呢?
一、多态是什么?
多态表示:父类对象可以引用指向子类。
(一)多态的概念:
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
(二)多态的实现条件:
(1)有继承关系
(2)子类重写父类的方法
(3)父类引用指向子类
(三) 继承和多态的区别:
继承的“普遍到特殊”是指:向宽泛的父类中添加属性、方法来构造一个具有特殊性的子类。多态的“普遍到特殊”是指:创建的父类的对象 可以通过引用指向子类 成为子类对象。
二、从实例理解多态
举个例子:
一个人可以从事不同的职业,我们把人类看作父类,每一种不同的职业看作子类。很明显,一个人有多种可能,可以是教师、医生、程序员··· 但是当这个人还没有找到工作的时候,我们无法确定他是教师还是其他什么职业,唯一确定的就是---他是“人类”。那在他找到工作之前我就称呼他是人类,他就做人类能做的事。他找到工作之后(即确定具体功能后),我再以确切的职业名称称呼他(父类对象person引用指向某一个子类),同时他也就要做这个职业要做的事。
下面我们通过代码感受一下:
父类代码如下:
public class People {
People(){
}
public void doThings() {
System.out.println("人类");
}
}
子类代码如下:
public class Teacher extends People{
Teacher(){
}
//重写
@Override
public void doThings() {
System.out.println("教师");
}
}
测试代码:
public class Demopeople {
public static void main(String[] args) {
//person是People类
People person=new People();
person.doThings();
//父类对象引用指向子类
//person2成为Teacher类对象,使用的方法是在子类中重写的方法
People person2=new Teacher();
person2.doThings();
}
}
输出结果:
总结
以上就是我所理解的java多态的内容,继承和多态是Java中非常重要的概念,两者一起对比理解或许更有利于我们区分和记忆。祝学习进步!



