不能继承,子类只能在父类中写一个public的getXXX的方法来获取父类中的private属性,子类就调用父类的getXXX来获取private属性

解决方案 »

  1.   

    有的说没有继承,
    有的说继承了但是没有访问权限
    上面两种说法同一个效果,继承了但没权限访问,跟没有继承,效果上是相同的,这个没必要纠结准确的说,不能继承到私有的属性和方法,只能继承protected 和 public 的属性和方法
      

  2.   

    我也确实听到过有的说能继承,只是无法访问。先声明:我没去看过java源码对这个的说明个人理解,不能,如果父类属性和方法被修饰为private,就不能被继承
      

  3.   

    没有看过源码,但可以在父类写public方法获取父类的私有属性
      

  4.   

    子类其实继承了父类的私有属性,一半情况不能访问,但通过反射还是可以访问的
    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;
    }
      

  5.   

    面向对象的三大特征之一封装,private了某个成员那么就必须对外创建一个对外访问接口,setXX()和getXX,否则本类中都没有办法访问。既然对外创建了访问接口,那么某个类继承了它之后肯定自身也具备了该属性或者方法,所以肯定继承了。换言之,父类的属性和方法都是从子类身上抽取的,如果子类继承了父类都没法具备父类的功能的话,继承就毫无意义了。
    或者有可能是这样的:父类中的属性和方法不能私有。因为我确实没映像看到过父类中的成员是私有的。
      

  6.   

    source 里面有一个 Get Set 方法 可以调用父类的私有成员吧
      

  7.   

    个人觉得是会被继承的。假设父类有私有变量 int a 和公共方法 int getA(),方法中访问了变量 {return a;}。子类继承的方法在被调用时,需要传入子类对象引用,就是this,因为方法内部实际上是 {return this.a;}。方法是通过对象引用来获取变量,如果没有继承,那么子类的this里面就没有这个a了。只是在子类内部,不能直接访问继承的私有变量。