文章代码很简单 主要是测试类之间的public和private在继承直接的特性
首先我们写三个类 分别为 person ,person2,person3 (有点不专业希望见谅比较只要测试出我们想要的就可以了)
然后person2继承person, person3继承person2
public class person {
private int a;
private int b;
private int c;
public person(int a, int b, int c) {
super();
this.a = a;
this.b = b;
this.c = c;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
}
写完Person类 按住ctrl+o可以看到如图
现在类里面有私有成员变量a ,b ,c
继续观察
public class person2 extends person{
public person2(int a,int b,int c){
super(a,b,c);
}
public int get(){
return this.getA();
}
public static void main(String args[]){
person3 t = new person3(1,2,3);
System.out.println(t.get());
}
}
现在用ctrl+o查看类可能看不得父类也就是person类的任何信息 OK 随便在一个方法里面输入this. 来看这个person2的属性
发现person类里面的a,b,c私有全部没掉 只有对应的公有方法get和set 也就是说私有的没继承到而共有的全部继承到了
但是。。。但是。。。注意看person2里面的 main()函数 和构造方法
虽然Person类里面的a,b,c没被继承 但是子类还是照样可以通过 构造函数super() 给父类的私有成员赋值
同时来对这些没有继承过来的私有变量进行操作的
到此 输出的结果是 1
做个小总结:
person2继承了person的所有共有方法,但是没继承person的私有变量,而只能通过从pseron那继承来的共有的对应的操作这些私有变量的方法和super()方法来操作这些没有继承的变量,而如果父类person里面没有给出对这些私有变量的操作方法,那么Person2将完全断绝与这些私有变量的关系。
继续做小测试:
我们写person3这个类
public class person3 extends person2{
public person3(int a, int b, int c) {
super(a, b, c);
a = this.get();
b = this.getA();
}
public static void main(String args[]){
person3 t = new person3(1,2,3);
System.out.println(t.get());
}
}
代码也很简单 。。。通过这个小代码 发现 person3也继承了person的所有公有方法