以下哪些类具有默认构造函数?

问题描述:

以下哪些类具有默认构造函数?我在想A,但我错了吗?以下哪些类具有默认构造函数?

class A {} 
class B {B() {}} 
class C {C(int j) {}} 
+2

你为什么这么想? – SLaks

+5

[Java默认构造函数]的可能重复(http://*.com/questions/4488716/java-default-constructor) – MWiesner

你是对的。根据定义,缺省构造函数是在未定义构造函数时创建的。由于A没有定义构造函数,因此会为其创建一个默认构造函数。

从技术上讲,你可以说B有一个默认的构造函数,因为如果没有定义没有参数的构造函数就会创建。

参考:http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8.9

+0

请问您可以添加对“定义”的引用,可能会有所帮助。 – MWiesner

+0

https://en.wikipedia.org/wiki/Default_constructor – Idos

+0

添加了我能在java文档中找到的最接近的东西。 – tnw

精确。

A有一个默认的构造函数,因为您没有为该类提供任何构造函数。因此,编译器会自动提供一个无参数的默认构造函数。这个默认构造函数将调用超类的无参构造函数(在这种情况下是Object类)。第二类,B,提供了一个无参数的构造函数,但它不是默认的,因为编译器没有为你提供它。