抽象类、接口、多态总结之三
1、JAVA中面向对象主要体现在:方法的重载和覆写;对象的多态性。
2、对于向上转型,程序会自动完成;而对于向下转型,必须明确指明要转型的子类类型。
3、在进行对象的向下转型前,必须首先发生对象的向上转型,否则将出现转换异常。
4、对象向下转型
1 class A{ 2 public void fun1(){ 3 System.out.println("A,,,fun1()"); 4 } 5 public void fun2(){ 6 this.fun1(); 7 } 8 } 9 class B extends A{ 10 public void fun1(){ 11 System.out.println("B,,,fun1()"); 12 } 13 public void fun3(){ 14 System.out.println("B,,,fun3()"); 15 } 16 } 17 public class PolDemo02 { 18 19 public static void main(String[] args) { 20 A a = new B(); 21 B b = (B) a; 22 b.fun1(); 23 b.fun2(); 24 b.fun3(); 25 } 26 }
B,,,fun1()
B,,,fun1()
B,,,fun3()
5、多态的用处
1 class A{ 2 public void fun1(){ 3 System.out.println("A,,,fun1"); 4 } 5 public void fun2(){ 6 this.fun1(); 7 } 8 } 9 class B extends A{ 10 public void fun1(){ 11 System.out.println("B,,,fun1"); 12 } 13 public void fun3(){ 14 System.out.println("B,,,fun3"); 15 } 16 } 17 class C extends A{ 18 public void fun1(){ 19 System.out.println("C,,,fun1"); 20 } 21 public void fun5(){ 22 System.out.println("C,,,fun3"); 23 } 24 } 25 26 public class PolDemo05 { 27 public static void main(String[] args) { 28 fun(new B()); 29 fun(new C()); 30 31 } 32 private static void fun(A b) { 33 b.fun1(); 34 } 35 36 }
输出结果为:
B,,,fun1
C,,,fun1