多态的理解

 1 package hadoop;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6         //多态,编译时看左边(下面变量s左边Super这个类),意思是首先看父类的有哪些方法,运行时看右边(Sub),
 7         //意思是s只能点出子类重写过父类的方法或者父类的所有方法,也就是模板在父类那,你必须按模板来实现,子类自己独有的是点出不的
 8         
 9         //例子1
10         Super s=new Sub();
11         s.print(3); //输出的是  Sub:::3,因为父类有这个方法,子类也重写了这个方法,输出的是子类那边的
12         s.printSuper(3);//输出的是  printSuper:::3,可以实现父类的方法
13         //可发现s.printSub点不出来
14         
15         //例子2
16         Sub s1=new Sub();//和(sub)s.xxx一样的,这边上下两个例子看着清楚
17         s1.print(3);//输出的是  Sub:::3
18         s1.printSub(3);//输出的是  printSub:::3
19         s1.printSuper(3);//输出的是  printSuper:::3,sub是super的子类,当然可以点出
20         
21         
22         //ps:多态有啥用?去看看设计模式的简单工厂模式的例子
23     }
24 
25 }
26  class Super{
27     public void print(int i){
28         System.out.println("Super:::"+i);
29     }
30     public void printSuper(int i){
31         System.out.println("printSuper:::"+i);
32     }
33 }
34 class Sub extends Super{
35     public void print(int j){
36         System.out.println("Sub:::"+j);
37     }
38     public void printSub(int j){
39         System.out.println("printSub:::"+j);
40     }
41 }
原文地址:https://www.cnblogs.com/fafafa123/p/12582774.html