http://www.i2i.org.cn/webexhibit/70925.jpg
请看5和6
6中说public类中的默认构造方法是public,为什么后面又说“如果一个public类定义构造方法中没有public” 不是默认为public吗?

解决方案 »

  1.   

    public class A{
    private A(){
    }}这个就叫做“public类定义构造方法中没有public”
    因为默认的构造函数被覆盖了
      

  2.   

    public class A{
     A(){
    }
    }
    默认试public啊,就是你不加public,就是public
      

  3.   

    不好意思,我说错了,还是1楼的老兄正解public class A{
     A(){
    }
    }
    我给的也是一个覆盖
      

  4.   

    public class A{
     A(){
    }
    }
    鍜?
    public class A{
    public A(){
    }
    }
    涓嶆槸涓€鏍风殑鍚楋紝浣犲摢閲岃閿欎簡锛?
      

  5.   

    public class A{
     A(){
    }
    }

    public class A{
    public A(){
    }
    }
    不是一样吗,你有什么错?
      

  6.   

    不要把
    "系统自动生成的"默认构造方法
    和默认构造方法搞混了
    很多书上把不带参数的构造方法称作默认构造方法
    有的书直接把"系统自动生成的"默认构造方法就叫默认构造方法
    结果弄的乱七八糟的.楼主的那张图,前面那个圈里指的是你自己没有写任何构造方法,系统为你自动生成的构造方法,其可见度是同类的可见度的. 后面那个圈里指的是你自己明确写出来的构造方法,这样一来系统就不会为你自动创建前面说的那个构造方法.如果你自己写的构造方法中没有public的,即便是public的类也没有public的构造方法...
      

  7.   

    public class A{
     A(){
    }
    }

    public class A{
    public A(){
    }
    }
    能一样吗?
      

  8.   

    不一样,默认构造函数是隐试的,看不到的。public class A{
     A(){
    }
    }
    这个只是一个覆盖,无参数的构造函数。默认的构造函数是没有方法内容的,
    而你在A()里面却可以加方法体。
    public class A{
     A(){
    }
    }
    应该跟这个一样吧
    public class A{
     protected A(){
    }
    }
    放在不同包里就调不到了