展开全部
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;
}
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修饰的成员方法和成员属性。
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的属性和方法不能
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private不行,
Protected可以,Public就更不用说了.
Protected可以,Public就更不用说了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询