个人认为
1、继承也是某种形式的“访问”
2、子类可以继承父类的public,protected成员(不管在不在同一个package中),同一package中还可以继承friendly成员
3、子类不可以继承父类的private成员(同一package中也不行)

解决方案 »

  1.   

    Ifeng273(IIIII)私有变量在子类中没有被继承,也就是没有在内存中分配空间,再在方法中指向该变量就是指向NULL,怎么可以访问了
      

  2.   

    是这样的吧。没问题的。
    class baseclass {
      private int i = 10;
      public int geti(){
        return i;
      }
      public void seti(int i){
        this.i = i;
      }
    }
    public class driveclass extends baseclass{
      public static void main(String[] args){
        driveclass x = new driveclass();
        x.seti(20);
        System.out.println("i = "+x.geti());
      }
    }
      

  3.   

    应该是这个意思吧~
    首先有个基类Parent吧
    public class Parent {
      private int friendly_Value; //忘记友元变量是怎么写的了,是不是直接写int friendly_Value就可以啦?:)
      public void init_value() {
        //直接设置该友元变量
        friendly_Value:= 100 ;
      }
      public void set_value(int value) {
        friendly_Value:= value ;
      }
    }接下来在另一个package中定义它的子类Child
    public class Child extended Parent {
      //下面继承方法init_value
      public void init_value() {
        //直接设置该友元变量
        //由于不能跨package使用友元变量,因此以下的语句应该是非法的吧
        friendly_Value:= 200 ;
        //取而代之,我们可以使用别的方法来访问该友元变量。当然,如果父类没有给出这样的访问方法就没辙了
        set_value(200) ;
      }}
    顺便说一下,其实不光是友元变量,任何变量应该都是可以继承的吧
    例如有以下parent类
    public class Parent {
      protect int protected_Value=10; //受保护的变量,可以在它的子类中访问该变量
      public void init_value() {
        protected_Value:= 100 ;
      }
      public int get_value() {
        return protected_Value ;
      }
    }然后有以下Child类
    public class Child extended Parend {
      protect int protected_Value; //"继承"变量?
      public void init_value() {
        protected_Value:= 200 ;
      }
    }最后...
    Child c= new Child() ;
    c.init_value() ;
    System.out.println(c.get_value()) ;没有试过,甚至不知道这种写法是否可行,不过我 猜
    protected_Value在 Child里其实是定义了两次 
    "Parent".protected_Value和 "Child".protected_Value,
    在Child中重载的init_value()方法中访问的是"Child".protected_Value,
    而get_value()由于没有在Child中重载,使用的仍然是"Parent".protected_Value。
    c.get_value()出来的结果应该是"Parent".protected_Value的初始值 即 10不知道猜得是否正确:P
      

  4.   

    上面的问题描述的不是很清楚,我看了三遍还没有理解
    不知道是不是这个意思:
    private方法是不可以被子类访问的,子类只可以访问public或protected地方法
    public和protected的区别在于
    一个类在包外继承类他,那么它只能访问到这个父类的public成员
    不能访问protected的成员。
      

  5.   

    这相当于间接访问,试想外界不能直接访问对象的私有数据成员,但能够通过公有的get,set方法访问它,这不是一个道理么
      

  6.   

    Visual C#研究群   群体号:7045990  谢谢大家的光临