抽象类、接口、多态总结之三

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

原文地址:https://www.cnblogs.com/XuGuobao/p/7251618.html