能说的更详细些吗??那些私有变量和私有方法在子类中都没有吗??要是防止其他类访问这样的方法和变量是不是都设成protected的!!我说的对吗??

解决方案 »

  1.   

    /* In a class hierarchy, private members remain
       private to their class.   This program contains an error and will not
       compile.
    */// Create a superclass.
    class A {
      int i; // public by default
      private int j; // private to A  void setij(int x, int y) {
        i = x;
        j = y;
      }
    }// A's j is not accessible here.
    class B extends A {
      int total;
      void sum() {
        total = i + j; // ERROR, j is not accessible here
      }
    }class Access {
      public static void main(String args[]) {
        B subOb = new B();    subOb.setij(10, 12);    subOb.sum();
        System.out.println("Total is " + subOb.total);
      }
    }
    该程序不会编译,因为B中sum( )方法内部对j的引用是不合法的。既然j被声明成private,它只能被它自己类中的其他成员访问。子类没权访问它。
    注意:一个被定义成private的类成员为此类私有,它不能被该类外的所有代码访问,包括子类。
      

  2.   

    这正好的封装完美体现阿!
    为什么要定义成私有变量,就是不想让别人直接修改这个变量(修改之前先判断一下能不能修改),或者这个变量就是这个类内部使用的,跟外界没有什么关系。
    如果是前者,就要定义一套Get和Set方法来访问和设置这个私有变量,当然你可以在这个Get和Set方法中定义自己的判断逻辑,不是合法的参数不会随便设置该私有变量的。
      

  3.   

    只要被定义了private
    则这个变量或是方法就只能在本类中使用了
      

  4.   

    类中变量和方法的访问权限共四种
    private    私有的 仅限本类中访问
    protected  保护的 仅限本类和子类访问
    public     公有的 任何能访问类的作用域均可以访问还有一种  没有以上三种修饰符,同一包内的类可以访问
      

  5.   


    private    私有的 仅限本类中访问,不能被子类继承
    protected  保护的 仅限本类和子类访问,可以被子类继承
    public     公有的 任何能访问类的作用域均可以访问,可以被子类继承还有一种  没有以上三种修饰符,同一包内的类可以访问,可以被子类继承
      

  6.   

    JAVA除了多重继承由接口来取代之外,其他继承均与C++类似!
      

  7.   

    http://expert.csdn.net/Expert/topic/2491/2491418.xml?temp=.2488672我覺得這里面對訪問權限這個問題可以幫助很好理解,建議初學者看。