小榄做网站,如何搭建,蒙古文网站建设汇报,手机做简单的网站定义#xff1a; 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定#xff0c;而是在程序运行期间才确定#xff0c;即一个引用变量到底会指向哪个类的实例对象#xff0c;该引用变量发出的方法调用到底是哪个类中实现的…定义 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定而是在程序运行期间才确定即一个引用变量到底会指向哪个类的实例对象该引用变量发出的方法调用到底是哪个类中实现的方法必须在程序运行期间才能确定。因为在程序运行时才确定具体的类。 这样不用修改源程序代码就可以让引用变量绑定到各种不同的类实现上从而导致该引用调用的具体方法随之改变即不修改程序代码就可以改变程序运行时所绑定的具体代码让程序可以选择多个运行状态这就是多态性。 多态存在的三个必要条件 1要有继承 2要有重写 3父类引用指向子类对象(向上转型) 对于java而言多态的实现机制遵循一个原则当超类对象引用变量 引用 子类对象时被引用对象的类型 决定了调用谁的成员方法但这个被调用的方法必须是在超类中定义过的也就是说被子类覆盖的方法。 实现形式 1继承 2接口 基于继承实现的多态 基于继承的实现机制主要表现在父类和继承该父类的子类对某些方法的重写多个子类对同一方法的重写可以表现出不同的行为。 一个栗子 public class Wine {private String name;public String getName(){return name;}public void setName(String name){this.name name;}public Wine(){}public String drink(){return 喝的是 getName();}public String toString(){return null;}
}public class JNC extends Wine{public JNC(){setName(JNC);}//重写父类方法实现多态public String drink(){return 喝的是 getName();}public String toString(){return Wine :getName();}
}public class WLY extends Wine{public WLY(){setName(WLY);}public String drink(){return 喝的是 getName();}public String toString(){return Wine :getName();}
}public class TestWine {public static void main(String[] args) {Wine[] wines new Wine[2];JNC jnc new JNC();WLY wly new WLY();//父类引用子类的对象wines[0] jnc;wines[1] wly;for(int i0;i2;i){System.out.println(wines[i].toString()wines[i].drink());}}
}控制台输出 Wine :JNC喝的是 JNC
Wine :WLY喝的是 WLY程序运行结果是调用子类中的方法这就是多态的表现。不同的对象可以执行相同的行为但是它们都需要通过自己的实现方式来执行这就得益于向上转型了。 如果父类是抽象类那么子类必须要实现父类中所有的抽象方法这样该父类所有的子类一定存在统一的对外接口但其内部的具体实现可以各异。这样我们就可以使用顶层类提供的统一接口来处理该层次的方法。 基于接口实现的多态 继承都是单继承只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现它能够利用一组相关或者不相关的接口进行组合与扩充能够对外提供一致的服务接口。所以它相对于继承来说有更好的灵活性。 一个栗子https://blog.csdn.net/thinkGhoster/article/details/2307001 public class A {public String show(D obj){return (A and D);}public String show(A obj){return (A and A);}
}public class B extends A{public String show(B obj){return (B and B);}public String show(A obj){return (B and A);}
}public class C extends B{}public class D extends B{}控制台输出 1A and A
2A and A
3A and D
4B and A
5B and A
6A and D
7B and B
8B and B
9A and D具体理解可参考https://www.cnblogs.com/chenssy/p/3372798.html本文参考https://www.cnblogs.com/chenssy/p/3372798.html 转载于:https://www.cnblogs.com/Rain1203/p/10737793.html