JAVA中子类能不能继承父类的私有属性和方法?

C++不能的
2024-11-24 22:06:26
推荐回答(5个)
回答1:

  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) this.getClass().getGenericSuperclass()).getDeclaredField("i");
i.setAccessible(true);
i.set(this, x);
}
public Object get() throws Exception{
Field i=((Class) 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;
}
  

  

回答2:

如果父类的数据和方法申明为私有使用(关键字private)
则子类不能访问他们

回答3:

那要看情况,如果是内部类的话就能访问:
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修饰的成员方法和成员属性。

回答4:

子类继承父类的所有方法和属性
private的属性和方法不能

回答5:

Private不行,
Protected可以,Public就更不用说了.