Java程序代码Java技术研究

覆盖 隐藏

2017-09-27  本文已影响1人  晨曦_hero

覆盖和隐藏的区别

1..public class Test {  
 2.   public static void main(String[] args)  {  
 3.    Circle circle = new Circle();//本类引用指向本类对象  
4.        Shape shape = new Circle();//父类引用指向子类对象(会有隐藏和覆盖)  
5.          
6.       System.out.println(circle.name);  
7.       circle.printType();  
8.       circle.printName();  
9.       //以上都是调用Circle类的方法和引用  
10.         
11.        System.out.println(shape.name);//调用父类被隐藏的name属性  
12.        shape.printType();//调用子类printType的方法  
13.        shape.printName();//调用父类隐藏的printName方法   
14.    }  
15.}  
16.   
17.class Shape {  
18.    public String name = "shape";  
19.       
20.    public Shape(){  
21.        System.out.println("shape constructor");  
22.    }  
23.       
24.    public void printType() {  
25.        System.out.println("this is shape");  
26.    }  
27.       
28.    public static void printName() {  
29.        System.out.println("shape");  
30.    }  
31.}  
32.   
33.class Circle extends Shape {  
34.    public String name = "circle"; //父类属性被隐藏  
35.       
36.    public Circle() {  
37.        System.out.println("circle constructor");  
38.    }  
39.     
40.    //对父类实例方法的覆盖  
41.    public void printType() {  
42.        System.out.println("this is circle");  
43.    }  
44.      
45.   //对父类静态方法的隐藏    
46.    public static void printName() {  
47.        System.out.println("circle");  
48.    }  
49.}  

上一篇下一篇

猜你喜欢

热点阅读