最近在做题的时候发现自己之前对继承的理解不对,子类能不能继承父类的私有属性和方法,随后在网卡查找,说法不一,看了一些文章,原来可以用断点来判断:
简单的父类例子
package com;
/**
* @Classname Father
* @Description TODO
* @Date 2020/8/12 5:36
* @Created by SunZhiQiang
*/
public class Father {
// 私有静态变量
private static int a = 1;
// 私有成员变量
private int b = 2;
// 私有成员常量
private final int C = 3;
// 保护成员变量
protected int d =4;
// 公共静态变量
public static int e = 5;
public static int getA() {
return a;
}
public static void setA(int a) {
Father.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return C;
}
}
子类继承上面的父类
package com;
/**
* @Classname Son
* @Description TODO
* @Date 2020/8/12 5:38
* @Created by SunZhiQiang
*/
public class Son extends Father {
}
在main方法中实例化子类
package com;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) {
Son s = new Son();
int b = s.getB();
System.out.println(b);
}
}
总结:
1、说明子类能够继承父类的私有属性,只是因为权限问题无法访问
2、静态成员无论公有还是私有的,都没有继承(我的理解是因为静态成员并不存放在对象对应的堆空间中,是在方法区,而继承是继承父类的对象的内容,所有也没有继承静态成员)