class Super
{
  private int s;  Super()
  {
     s = 100;
     System.out.println(s);
  }
}class Sub extends Super
{
  Sub()
  {
    super();
  }
}class SS
{
  public static void main(String[] args)
  {
     Sub s1 = new Sub();
  }
}问题:
  private修饰的类不是不能应用于子类吗?为什么没有报错!
       表  修饰符的作用范围
修饰符          类             子类              包                所有类和包
public        可以            可以             可以               可以
private       可以            不能            不能               不能
protected     可以            可以            可以               不能
package       可以            不能            可以               不能

解决方案 »

  1.   

    哪来的private修饰的类?
    是指private int s?不能访问而已!又不是没有继承
      

  2.   

    private修饰的不是整个类,而是int s!
    这时子类不能直接访问父类的私有成员,但还继承了父类的方法和属性.
    所以不会报错.
      

  3.   

       哦,我打错了一个字,不是说私有类,而是私有成员.
    问题: 
        private修饰的成员变量(属性)不是不能应用于子类吗?为什么没有报错! ,不是子类不能访问吗?为什么最后还可以打印出来.
      S = 100
                  表     修饰符的作用范围 
    修饰符                     类                           子类                             包                                 所有类和包 
    public                 可以                         可以                           可以                               可以 
    private               可以                         不能                         不能                               不能 
    protected           可以                         可以                         可以                               不能 
    package               可以                         不能                         可以                               不能
      

  4.   

      private修饰的成员变量(属性)不是不能应用于子类吗?为什么没有报错!   ,不是子类不能访问吗?为什么最后还可以打印出来. 打印的时候是在 Super() 
        { 
              s   =   100; 
              System.out.println(s); //这里打印,它是在本类中啊,当然可以打印了.
        } 
      

  5.   

      哦,我打错了一个字,不是说私有类,而是私有成员. 
    问题:   
            private修饰的成员变量(属性)不是不能应用于子类吗?为什么没有报错!   ,不是子类不能访问父类的私有变量吗?为什么最后还可以打印出来. 
        S   =   100    表     修饰符的作用范围 
    修饰符               类                  子类                  包      所有类和子类     private           可以                 不能                不能           不能
    public            可以                 可以                可以           可以 
    protected         可以                  可以               可以            不能
    package           可以                 不能                 可以           不能 
      

  6.   

    问题:       
                    private修饰的成员变量(属性)不是不能应用于子类吗?为什么没有报错!       ,不是子类不能访问父类的私有变量吗?为什么最后还可以打印出来.   
    ——————————————————————————
    子类不是不能访问父类的私有变量,是不能直接访问父类的私有变量。子类会继承到父类的所有属性和方法,可以通过父类公开的一些方法来间接访问父类的私有变量
      

  7.   


    1、成员变量和static方法是不继承的,没有多态。
    2、子类构造体调用时首先调用父类构造体
    3、父类构造体调用自己的成员变量
      

  8.   

    看看这个输出什么?class Super {
    private int s = 100; Super() {
    abc();
    } void abc() {
    System.out.println("s " + s);
    }
    }
    class Sub extends Super {
    private int s1 = 200; void abc() {
    System.out.println("s1 " + s1);
    }
    public static void main(String[] args) {
     new Sub();
    }}