java 子类有没有继承父类的私有属性和私有方法呢 不能继承,子类只能在父类中写一个public的getXXX的方法来获取父类中的private属性,子类就调用父类的getXXX来获取private属性 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有的说没有继承,有的说继承了但是没有访问权限上面两种说法同一个效果,继承了但没权限访问,跟没有继承,效果上是相同的,这个没必要纠结准确的说,不能继承到私有的属性和方法,只能继承protected 和 public 的属性和方法 我也确实听到过有的说能继承,只是无法访问。先声明:我没去看过java源码对这个的说明个人理解,不能,如果父类属性和方法被修饰为private,就不能被继承 没有看过源码,但可以在父类写public方法获取父类的私有属性 子类其实继承了父类的私有属性,一半情况不能访问,但通过反射还是可以访问的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了某个成员那么就必须对外创建一个对外访问接口,setXX()和getXX,否则本类中都没有办法访问。既然对外创建了访问接口,那么某个类继承了它之后肯定自身也具备了该属性或者方法,所以肯定继承了。换言之,父类的属性和方法都是从子类身上抽取的,如果子类继承了父类都没法具备父类的功能的话,继承就毫无意义了。或者有可能是这样的:父类中的属性和方法不能私有。因为我确实没映像看到过父类中的成员是私有的。 source 里面有一个 Get Set 方法 可以调用父类的私有成员吧 个人觉得是会被继承的。假设父类有私有变量 int a 和公共方法 int getA(),方法中访问了变量 {return a;}。子类继承的方法在被调用时,需要传入子类对象引用,就是this,因为方法内部实际上是 {return this.a;}。方法是通过对象引用来获取变量,如果没有继承,那么子类的this里面就没有这个a了。只是在子类内部,不能直接访问继承的私有变量。 根据下面的代码给解释一下 myEclipse快捷键错误 工作中hibernate用表反射生成映射文件那注解怎么办???? 渴望一条正确的路线 struts问题 关于logic标签的问题 关于用weblogic运行jsp文件 java Applet在浏览器中如何运行!!!!!新手 ...在线等待!!!!!!!!!!!!!!! hibernate如何使用jndi来连接oracle数据库 请教,CMR怎么用? jetty服务器报异常:thread number upper limit of normal,跪求大神指导 使用jni多次加载卸载DLL,出现的一些问题
有的说继承了但是没有访问权限
上面两种说法同一个效果,继承了但没权限访问,跟没有继承,效果上是相同的,这个没必要纠结准确的说,不能继承到私有的属性和方法,只能继承protected 和 public 的属性和方法
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;
}
或者有可能是这样的:父类中的属性和方法不能私有。因为我确实没映像看到过父类中的成员是私有的。