我们如何确认对象是用java创建的

我们如何确认对象是用java创建的,java,Java,我们都知道不能实例化抽象类。 有人说,当创建任何对象时,都会调用构造函数。 但是当我们实例化一个抽象类的子类时,就会调用抽象类构造函数。我相信如果调用构造函数,并不意味着创建了对象。 我的问题是:我们如何确认对象已创建: public abstract class One { public One() { System.out.println("One Object Constructor "); } public void test()

我们都知道不能实例化抽象类。
有人说,当创建任何对象时,都会调用构造函数。 但是当我们实例化一个抽象类的子类时,就会调用抽象类构造函数。我相信如果调用构造函数,并不意味着创建了对象。 我的问题是:我们如何确认对象已创建:

public abstract class One
{
    public One()
    {
        System.out.println("One Object Constructor ");
    }

    public void test()
    {
    }

    public void testTwo()
    {
        System.out.println("Test Two");
    }
}

public class Two extends One
{
    public Two()
    {
        System.out.println("This is Two");
    }

    public static void main(String[] args)
    {
        Two t = new Two();
    }
}
输出:

一个对象构造函数
这是两个


在创建对象/实例时,始终调用构造函数。如果你有一个没有构造函数的类,它实际上会有一个不带参数的构造函数,并在超类中调用一个类似的无参数构造函数

此外,所有类都必须显式或隐式地调用其超类构造函数(隐式调用仅在超类具有无参数构造函数时有效),因此可以确保已调用链中每个类的构造函数


也许您的意思是,在One的构造函数中,您不能确保实际实例具有类One,它也可能是子类?如果是这样,您可以使用getClass()进行验证,它返回实际的类。

只有在子类中调用基类的构造函数时才会调用它“我相信调用构造函数并不意味着创建了该对象。”为什么您会相信这一点?chokdee:构造函数做的第一件事,不管您是否显式编写代码,调用父类的构造函数。当构造函数完成并且没有引发异常时(不是由构造函数引发,也不是由初始值设定项引发),将创建该对象。这意味着如果
Two t=newtwo()毫无例外地完成,您可以确定创建了一个
Two
对象。@Tom我相信如果调用构造函数,它只会实例化变量