JAVA中,子类可以继承父类的私有属性和方法,但一般不能直接访问,但通过反射还是可以访问的:
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class A extends B{
public void set(int x) throws Exception{
Field i=((Class extends A>) this.getClass().getGenericSuperclass()).getDeclaredField("i");
i.setAccessible(true);
i.set(this, x);
}
public Object get() throws Exception{
Field i=((Class extends A>) this.getClass().getGenericSuperclass()).getDeclaredField("i");
i.setAccessible(true);
return i.get(this);
}
public static void main(String[] args) throws Exception{
A a=new A();
System.out.println(a.get());
a.set(777);
System.out.println(a.get());
}
}
public class B {
private int i=100;
}
如果父类的数据和方法申明为私有使用(关键字private)
则子类不能访问他们
那要看情况,如果是内部类的话就能访问:
public class A {
private int test = 1;
class B extends A {
public int test = 2;
public B(int test) {
System.out.println(super.test);
System.out.println(this.test);
System.out.println(test);
}
}
public static void main(String[] args) {
new A().new B(3);
}
}
如果排除内部类的话,子类是不能访问父类被private修饰的成员方法和成员属性。
子类继承父类的所有方法和属性
private的属性和方法不能
Private不行,
Protected可以,Public就更不用说了.