`
ZangXT
  • 浏览: 118003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

默认构造方法并非总是public的

 
阅读更多

     以前印象中一直有一个概念,说“如果没有提供构造方法,java将自动添加一个空的public的构造方法”。现在看来,有2个问题,一,默认构造方法未必是public的,二,默认构造方法肯定有super();(Object类的是空构造方法)。

实际情况是,默认构造方法的修饰符是和所在类的修饰符一致的。

比如

public class Test{

}

它的默认构造方法是

public Test(){

super();

}

class Test{

}

它的默认构造方法是

Test(){

super();

}

这就没有public了。

对于内部类的情况,类的修饰符可能是private,protected。相应的构造方法的修饰符就是private和protected。

分享到:
评论
3 楼 ZangXT 2009-08-10  
Relucent 写道
其实未必是内部类,单例类往往也做成私有构造


我指的是编译器自动生成的默认构造方法,跟单态类不是一样的情况。
2 楼 Relucent 2009-08-10  
其实未必是内部类,单例类往往也做成私有构造

1 楼 rmn190 2009-08-07  
楼主明查秋毫啊!

相关推荐

    3.面向对象编程_选择题[参考].pdf

    D错误,虽然通常建议提供构造方法,但并非强制要求。 9. 显示调用父类型的构造方法是通过在子类构造方法中使用`super()`来完成的,这使得子类实例化时能初始化父类的成员。 10. 正确的说法是:C(JAVA 中只有单...

    就业班JavaSE--day02 每日作业卷3

    - 如果在构造方法中没有明确使用`this`或`super`调用其他构造方法,Java会自动在最开始添加一个隐式的`super()`调用,除非父类有默认构造方法。 3. **抽象方法和抽象类**: - 抽象方法是没有方法体的方法,只有...

    JAVA判断题含答案.pdf

    29. 默认构造器:当没有显式定义构造器时,Java提供默认构造器。选项B正确。 30. 局部变量:局部变量在方法调用时创建,方法结束时销毁。选项B正确。 31. `this()`调用:`this()`可以在构造方法的第一行调用,用于...

    JAVA判断题含答案.doc

    当一个类没有显式定义构造方法时,Java 系统总是为其创建一个默认的无参的构造方法。 - **知识点**:如果类没有定义任何构造方法,Java 编译器会自动生成一个无参构造方法。 - **正确答案**:B. 正确 #### 31. ...

    面向对象考试题归类.pdf

    因此,选项D是错误的,即使类定义了构造方法,也不能再使用默认构造方法。 6. 这段代码试图在一个静态方法ab()中访问非静态变量a,这会导致编译错误。因此,正确答案是B。 7. 构造方法没有返回类型声明,但它总是...

    论C++构造函数中的不合理设计

    - **问题分析**:默认构造函数和拷贝构造函数的隐式生成可能导致意外的行为。例如,默认构造函数可能不会正确初始化某些成员变量;而编译器自动生成的拷贝构造函数可能会产生浅拷贝而非深拷贝,从而导致数据不一致...

    ACCPSJava面向对象编程PPT教学课件.pptx

    在子类构造方法中,可以使用`super()`或`super(parameters)`来显式调用父类的构造方法,且必须作为子类构造方法的第一行。 然而,并非所有父类的成员都可以被继承。私有成员(`private`)和在同一包内具有默认访问...

    【精美排版】java期末测验题.doc

    - 构造方法可以与类名相同,这是默认的构造方法形式。 4. **继承**: - 子类可以继承父类的非私有属性和方法,但不能直接访问私有属性,可以通过公共方法间接访问。 - 接口用于实现多继承,但不能继承父类的私有...

    类的方法练习

    15. 构造方法调用:构造方法不能像普通方法那样被调用,只能通过`new`关键字创建对象时自动调用。选项C(只能通过new自动调用)是正确的。 16. 常量定义:在Java中,常量通常用`final`关键字定义,结合`public`修饰...

    JAVA期末复习资料.pdf

    10. **默认构造器**:并非所有类都有默认构造器,只有当用户没有定义任何构造器时,编译器才会自动生成一个无参构造器。 11. **访问私有成员**:私有成员(变量或方法)在类的外部是不可见的,不能直接访问。 12. ...

    java的访问修饰符的范围说明

    例如,类(外部类)只能使用public和默认权限修饰符,而数据成员、方法成员和构造方法可以使用所有四种修饰符。同时,修饰符修饰的是成员的“被访问”的权限,它控制的是哪些其他类可以访问这些成员。 通过实例考察...

    接口与Object类

    6. **默认特性**:接口中的方法默认为公共抽象(public abstract),属性默认为公共静态常量(public static final);而抽象类中的方法和属性则没有这些默认限制。 ### Object类 Object类在Java中具有举足轻重的地位...

    Java面向对象程序设计.doc

    2. `MyClass`的构造方法应该使用`this`关键字,而不是类名,即`this(d)`,并且方法名应为`MyClass`而非`MyClass()`。 3. 类`MyMain`尝试访问`MyClass1.data`,但未提供足够的上下文,可能需要一个实例或静态变量。 ...

    Eclipse右键生成get、set方法.rar

    3. **避免无用的get、set**:并非所有属性都需要get、set方法,例如内部状态或只读属性。 4. **使用Builder模式**:对于构造器参数过多的情况,使用Builder模式创建对象,可以减少setter的使用。 通过Eclipse的这个...

    java期末测验题答案.docx

    - 选项 D 中提到的“构造方法不能有参数”是错误的,构造方法可以带有参数。 ### 12. 继承与接口 - **知识点概述**:Java 支持单一继承和多重接口实现。 - **详细解析**: - Java 中的类支持单一继承,即一个类...

    java做的简单计算器

    - **构造方法**:可以使用默认构造方法或者带参数的构造方法创建按钮。 - **监听器**:通过添加 `ActionListener` 来响应按钮点击事件。 ### 3. 事件处理机制 #### 3.1 ActionListener 当按钮被点击时,会触发一个...

    Java程序设计试卷与答案

    8. 构造方法:构造方法无返回类型,用于初始化对象,但并非只能为void,而是没有返回类型声明。 9. Java对象赋值:通过赋值操作符=,对象赋值实际上是复制对象的引用,而不是内容。因此,除非对象不可变,否则修改...

Global site tag (gtag.js) - Google Analytics