Java 三大特征之多态与向上转型、向下转型
Java 多太性的体现:
1. 方法的重载和重写
2. 对象的多态性
对象的多态性:
向上转型:程序会自动完成
父类 父类对象 = 子类实例
向下转型:强制类型转换
子类 子类对象 = (子类对象)父类实例
代码如下:
package hello; class A{ public void tell1(){ System.out.println(" A -- tell1 "); } public void tell2(){ System.out.println(" A -- tell2 "); } } class B extends A{ public void tell1(){ System.out.println(" B -- tell1 "); } public void tell3(){ System.out.println(" B -- tell3 "); } } public class PolDemo01 { public static void main(String[] args) { //向上转型 //父类 父类对象 = 子类实例 B b = new B(); A a = b; a.tell1();//调用 X 中的 tell1,因为重写 a.tell2(); //向下转型 //子类 子类对象 = (子类对象)父类实例 A a2 = new B();//先完成向上转型 B b2 = (B)a2; b2.tell1(); b2.tell2(); b2.tell3(); } }
多态性的应用
代码如下:
package hello; class A1 { public void tell1(){ System.out.println("tell1"); } } class B1 extends A1 { public void tell2(){ System.out.println("tell2"); } } class C1 extends A1 { public void tell3(){ System.out.println("tell3"); } } public class Demo02 { public static void main(String[] args) { say(new B1());//实例化子类,调用父类的方法 say(new C1()); } public static void say(A1 a1){ a1.tell1(); } }