`
liuwei1981
  • 浏览: 770283 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:160758
社区版块
存档分类
最新评论

14.Java默认构造器

 
阅读更多

上篇说到了Java类中重要的部分:构造器,说到一个类中,至少必须有一个构造器,否则就无法使用构造器来创建对象了。

 

如果类中没有构造器,按理说是不符合Java语言规定的,但是看我们前面的示例,很明显类中没有定义构造器,但是也通过了Java编译器的编译,而且也能正常运行。

 

是我们说错了么,当然不是。

 

是这样的,如果在程序中没有定义任何的构造器,则编译器将会自动加上一个不带任何参数的构造器。默认的构造器不带任何的参数,也没有“方法体”。

 

看,我们的Java编译器还是很贴心的吧。

 

我们回头来看示例2-2,在这个Dog类中定义了一个只带一个参数的构造器。如果上面的Dog类没有定义构造器,则编译器会自动加上一个构造器:
public  class  Dog {
 private  int  weight;
  //注意,这个构造器实际上并不存在于源程序中
 public  Dog() {
 }
}


所以,这个时候可以用下面的语句来实例化这个类:
 Dog d = new Dog();


如果在程序中定义了构造器,则编译器将不再提供默认的构造器,例如在上面的示例2-2中,已经定义了一个构造器,这个构造器有一个参数,如果这时候再使用下面的语句来实例化这个类,则在编译时将会报错:
 Dog d = new Dog();


将会出现如下的错误:
cannot resolve symbol
symbol  : constructor Dog ()
location: class Dog
                Dog d = new Dog();
                        ^
1 error

分享到:
评论

相关推荐

    java 构造器的调用

    - 如果一个类没有声明任何构造器,Java会自动提供一个无参的默认构造器。这个构造器不执行任何初始化操作,仅调用超类的默认构造器。 - 一旦为类定义了构造器,Java将不再提供默认构造器。因此,如果需要无参构造...

    Java入门理解构造器

    - **默认构造器**:当一个类没有显式地定义任何构造器时,Java编译器会自动为该类提供一个默认构造器。默认构造器是无参的,并且不执行任何操作。 - **自定义构造器**:开发者可以根据需求定义一个或多个构造器来...

    Java开发技术大全(500个源代码).

    listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的...

    653.651.JAVA基础教程_反射-获取运行时类的构造器结构(653).rar

    这包括私有的、受保护的以及默认(包级私有)构造器。 对于每个`Constructor`对象,我们可以通过以下方法获取更多信息: - `getModifiers()`:返回构造器的修饰符,如public、private等,结果是一个整数,可以使用...

    Java 构造方法

    - **默认构造器**:如果程序员没有定义任何构造方法,Java编译器会自动提供一个无参的默认构造器。但一旦自定义了构造器,这个默认构造器将不再自动生成。 - **参数化构造器**:当需要在创建对象时传入特定值来初始...

    Java编程思想第05章初始化与清理.ppt

    《Java编程思想》第五章主要讨论的是对象的初始化与清理,包括构造器的使用、方法重载以及默认构造器的概念。下面将详细阐述这些知识点。 ### 一、构造器确保初始化 1. **为什么要引入构造器**:在Java中,构造器...

    ikm java 8@www.java1234.com.zip

    6. **方法与构造器引用**:除了lambda表达式,Java 8还引入了方法引用和构造器引用,它们可以更直接地引用已有方法或构造器,简化代码。 7. **Optional类**:为了解决空指针异常问题,Java 8引入了`Optional`类,它...

    java82.java82.zip

    9. **构造器接口**:Java 8 允许接口中定义静态方法,这些方法可以作为工具类使用,而无需创建实例。 10. **类型推断增强**:Java 8 对泛型类型的推断进行了增强,使得在某些情况下编译器能更准确地推断出类型。 ...

    Java面向对象(基础)- 类的成员之三:构造器(Constructor)

    当创建一个对象时,如果没有显式调用构造器,那么就会自动使用默认构造器。 2. **作用**: - **创建对象**:与`new`关键字一起使用,构造器负责实例化对象。 - **初始化属性**:构造器允许我们在创建对象的同时为...

    Java中构造方法的特点.pdf

    6. **默认构造器**:如果程序员在定义类时不定义构造方法,Java编译器会自动提供一个无参数的默认构造器。这个默认构造器不执行任何代码,仅用于对象的创建。但是,一旦程序员自定义了一个构造方法,系统就不会再...

    java基础补足和thinking In Java学习.rar

    默认构造器又称为无参构造器,在没有其他构造器的情况下,JAVA会帮助类生成一个默认的构造器即无参构造器,可以被省略不写。 5.4 this关键字 1. this关键字可以指当前对象,即当前类的对象 2. this关键字在同一...

    javade8种构造共12页.pdf.zip

    1. **默认构造器**:每个Java类都隐含地拥有一个无参的默认构造器,如果程序员没有显式定义任何构造器的话。这个构造器负责初始化类的基本属性。 2. **带参数的构造器**:当类需要在创建对象时传入特定初始值时,会...

    理解构造器--构造器和方法的区别

    最后,值得注意的是,Java编译器会在构造器中自动插入对超类构造器的调用,如果没有显式指定,会默认调用无参构造器。这在继承层次结构中确保了初始化的连续性。 总之,理解构造器和方法的区别对于Java程序员至关...

    构造器的解释.

    5. **默认构造器**:如果类中没有显式地定义任何构造器,Java编译器会自动提供一个不带参数的默认构造器。 #### 三、构造器的应用实例 下面通过两个例子来具体说明构造器的作用和使用方法。 ### 实例一:基本构造...

    构造方法JAVA构造方法

    - **默认构造器**:当用户没有定义任何构造器时,Java会提供一个无参数的默认构造器。它执行基本的初始化,如将成员变量设置为默认值。 - **自定义构造器**:用户可以根据需要定义带参数的构造器,以实现更复杂的...

    农行,笔试题,java,c

    13. Java 面板默认布局:FlowLayout。 14. Java 类组成:属性和方法。 15. Java 构造函数:基本使用规则。 16. Java 对象声明和使用。 17. Java 类继承:重写父类方法。 18. Java 可重用代码。 三、数据结构 19. ...

    JAVA 面试 1000题内容全覆盖2017年新版

    17. 为什么Java类需要默认构造器? 18. Java中的构造器返回什么值? 19. 可以继承构造器吗? 20. 为什么Java中的构造器不能是final、static或abstract的? 这些问题帮助面试者展示对面向对象概念的理解,例如继承、...

    java中的继承(子类调用父类构造方法还不懂).doc

    // 调用父类的默认构造器 } ``` 或者指定父类构造器的参数: ```java public Son1(String name) { super(name); // 调用父类带参数的构造器 } ``` **3. 调用父类构造器的注意事项** - **位置**:调用父类构造...

    Effective.Java3rd.zip

    14. **使用私有构造器或final类来阻止实例化**:对于工具类或者单例模式,这样做可以防止外部非法实例化。 15. **避免非最终字段的同步**:非最终字段在多线程环境中可能导致数据不一致,应优先考虑使用原子变量或...

Global site tag (gtag.js) - Google Analytics