Java 中子类如何实现对父类私有域的继承


父类中的公有方法和域(属性),在类继承中将会被子类继承,但是私有的将不能被继承。

那么在继承中子类如何才能继承到父类的私有域呢?

答案是:在子类的构造方法中通过super()方法调用父类的构造方法。

也就是,在构造子类的同时,为子类构造出跟父类相同的域。如此就在子类的对象中,也拥有了父类声明的域了。

并且我们也应该这样做。 

演示代码如下:

Person.java

view plaincopy to clipboardprint?
  1. public class Person{  
  2.     private String name;  
  3.       
  4.     public Person(String name){  
  5.         this.name = name;  
  6.     }  
  7.       
  8.     public void setName(String name){  
  9.         this.name = name;  
  10.     }  
  11.       
  12.     public String getName(){  
  13.         return name;  
  14.     }  
  15. }  

Student.java

  1. public class Student extends Person{  
  2.       
  3.     public Student(String name){  
  4.         super(name);  
  5.     }  
  6. }  

TestStudent.java

  1. public class TestStudent{  
  2.     public static void main(String[] args){  
  3.       
  4.         Student mStudent = new Student("abc");  
  5.         String mName = mStudent.getName();  
  6.         System.out.println("Name is : " + mName);  
  7.           
  8.         mStudent.setName("efg");  
  9.         mName = mStudent.getName();  
  10.         System.out.println("Name is : " + mName);  
  11.           
  12.     }  
  13. }  

打印结果为:

Name is : abc

Name is efg

相关内容