java再复习——多态的理解

来源:互联网 发布:linux 查看硬件命令 编辑:程序博客网 时间:2024/06/09 14:45

每当有人问我什么是多态的时候,我并不知道到底该如何去回答。我只知道在代码中什么时候该使用接口,什么时候使用父类,继承,使用多态的特性来编程,但是到底该如何回答,今天我想强迫自己总结一下。

多态的定义:多种形态,可以实现动态联编,就是在编译的时候是一种形态,在运行的时候绝对它的真正形态。

这话到底是他妈的什么意思?

简单点,说话的方式再简单点,对应代码就是:

public class Test {public static void main(String[] args) {Person person = new Person();Person son = new Son();person.say();son.say();}}class Person{public void say(){System.out.println("person fuck");}}class Son extends Person{public void say(){System.out.println("son fuck");}}
结果:

person fuckson fuck

对应语法就是,父类的引用指向子类的实例,在运行的时候,具体执行谁的方法,是由引用指向的真正的实例所决定的。


这样做的好处就是,使的的程序可以很好的扩展以及大大提供程序的灵活性。

比如:

有一个方法

public class Test {public void TestSay(Person person){person.say();}}
形参是Person,这就意味着Person实例以及Son实例都可以传入,而且内部都是直接调用say方法,不用关心到底是谁,在程序真正运行的时候会去决定到底是谁,这样在编写程序的时候,灵活性就极大了,假设如果没有这种特性的存在,那么首先需要编写两个方法,来分别接受Person参数和Son参数,而且如果以后有了Son2,Son3,Son4类的话,还需要去大量的增加和修改代码,程序根本没有办法应对扩展,而如果有了多态的特性,则上述代码根本不用变,就算以后出来了Girl1,Girl2上述的那行代码还是不用变。

这就是多态的语法与应用。
其实就是为了程序的扩展与改变。

0 0
原创粉丝点击