多态的使用
class A1{ public void tell1(){ System.out.println("A1 -- tell1"); }}class B1 extends A1{ public void tell1(){ System.out.println("B1 -- tell2"); }}class C1 extends A1{ public void tell1(){ System.out.println("C1 -- tell3"); }}public class PolDemo02 { public static void main(String[] args) { say(new B1()); say(new C1()); } public static void say(A1 a){ a.tell1(); }}
运行结果:
B1 -- tell2
C1 -- tell3
代码分析:
在类PolDemo02中,main()方法传递给say()方法:new B1()和new C1()。我们可以这样看:A1 a = new B1(),A1 a = new C1(),声明部分为父类,赋值部分为子类的这个对象a,在调用重写方法时,是调用的子类的方法。另外,a对象不存在子类的其它方法。
多态产生必须有以下条件:1.必须有继承。
2.必须有方法重写。
3.必须是父类声明,实际是子类对象。(父类声明,子类实例化)