java中的每个Object都有自己的构造函数吗?

时间:2011-09-23 05:27:58

标签: java constructor

这个问题是因为我读了这行通过调用构造函数方法创建了一个对象的新实例。我是什么但构造函数方法是什么..?一个OObject或一个类本身..?..抱歉,如果它是一个业余问题,但我还在学习java,我发现它很难理解。

这让我想起了哪一只是鸡肉还是鸡蛋......?

修改

可能我的问题不明确,我知道如何创建对象并且每个类都有一个构造函数但我想知道的是,堆中的每个对象都有自己的实例变量副本。以同样的方式,他们也会有一个带有它们的构造函数,或者只有类只有它的东西。

7 个答案:

答案 0 :(得分:5)

在面向对象的设计中,构造函数是从类定义中创建对象的东西......

这里有两个关键概念

  • - 类是实例化对象应包含的蓝图,包括行为(方法)和信息(属性)。通常包含一个构造函数。

  • 对象 - 构造函数创建的东西,实际使用中 instatiated 版本。

正在使用的构造函数的示例

public class MyClass {

    public int intProperty;

    // This is the Constructor, Notice it shares a name with the Class
    public MyClass(int value) {
        intProperty = value;
    }
}

现在使用班级

//                            |----------This is calling the constructor
//                            |          and placing a new MyClass object
//                            v          in myClassObejct
MyClass myClassObject = new MyClass(3);

myClassObject.intProperty; // 3

这会创建一个新的MyClass 对象

Java 没有没有类和构造函数,它是语言设计模式的核心......

只有类具有构造函数,对象构造函数的产品,Object本身不包含构造函数。

答案 1 :(得分:2)

是的,你调用了类的构造函数:

MyClass instance = new MyClass();

但请注意,某些对象具有该语言允许的特殊构造函数,例如String:

String x = "foobar";

非常相似(但不完全相同):

String x = new String("foobar");

请注意,如果没有为类定义构造函数,则隐含默认(no-args)构造函数。

答案 2 :(得分:2)

是的,每个班级都有一个构造函数。

如果您没有明确定义一个,Java将为您创建一个默认的空值。

答案 3 :(得分:1)

在Java中,每个类都有一个或多个构造函数,当使用new关键字创建对象时,会调用该类的构造函数。

示例:

Integer i = new Integer("1");
//i is the object, and the Integer class constructor gets called

答案 4 :(得分:1)

每个类都必须有自己的构造函数。要么提供一个或多个ctor,要么编译器会为您生成默认的无参数ctor。如果你有自己的ctor,那么编译器不会生成任何东西。

答案 5 :(得分:1)

Java中的每个对象都必须通过一些Class的构造函数创建,除了一些原始类,如String,它有特殊的分配规则。即使在最基本的级别,您也可以随时致电

Object o = new Object();

由于Java中的所有对象都继承自Object超类,因此大多数对象都将继承默认构造函数。

这个例外是当一个类只有一个私有构造函数时 - 一个不能被任何外部类调用的构造函数。在这种情况下,由于不再需要默认构造函数,因此也无法访问它。

class MyClass
{
    private MyClass()
    {
        //cannot be called by outside classes
    }
}

通常,这用于纯静态类(不需要实例)或Singleton对象(想要限制实例化)。因此,所有对象都是从某个构造函数创建的,但并非所有类都必须具有可用的构造函数。

答案 6 :(得分:0)

语句“通过调用构造函数方法创建对象的新实例”是一个不正确的语句,并且是导致混淆的原因。没有对象的实例这样的东西。对象是类的实例。以下2个陈述有效:

通过调用构造函数方法创建对象。

通过调用构造函数方法创建类的实例(即对象)。