gpt4 book ai didi

java - 自实例化机制/概念在 Java 中如何工作?

转载 作者:行者123 更新时间:2023-11-30 05:55:13 24 4
gpt4 key购买 nike

我是 Java 和 OOP 的新手,所以下面的一些内容可能听起来很傻,但是......

我理解一种情况,当我有两个类(两种不同类型)并且一个类对另一个类的实例做任何它想做的事情,比如

class A { ... }

class B {
...
public A someMethod() {
return new A;
}
...
}

当 B 的方法正在声明一些代码与 A 一起工作时,A 类型已经非常明确和完整,因此一件事可以与另一件事一起使用/制作另一件事。在这一点上,这一切对我来说都是合乎逻辑的。

但我在考虑这样一种情况,即类声明中有一个方法可以处理它自己类型的实例。这怎么可能?我可能会想象一些“循环”,但它不是循环。在编写代码时,该方法如何拥有关于不“完整”或不完全已知的事物的代码。

抱歉,如果我的描述有些困惑,我找不到更好的词来解释这一点。绝对不能把这个概念融入我的脑海。有人可以解释一下吗?

更新:我发现了一些可以帮助您理解我的问题的片段。下面类中的代码不会创建自身的实例,但会将绝对其他对象转换为它的 (RectanglePlus') 类型...

public class RectanglePlus 
implements Relatable {
...

// four constructors
public RectanglePlus() {
origin = new Point(0, 0);
}
...
// a method required to implement
// the Relatable interface
public int isLargerThan(Relatable other) {
RectanglePlus otherRect
= (RectanglePlus)other;
if (this.getArea() < otherRect.getArea())
return -1;
else if (this.getArea() > otherRect.getArea())
return 1;
else
return 0;
}
}

版权所有 © 2008、2010 Oracle 和/或其附属公司。版权所有。使用须遵守许可条款。

最佳答案

在编译期间,这是通过使用 multi-pass compiler 来完成的在处理单个语句之前首先分析类和方法签名。

在运行时,类加载和初始化发生在类首次使用时,通常在其任何代码执行之前。因此,当类的方法被执行时,它的整个结构和代码已经初始化。

但是您是对的,可能在类初始化期间执行的代码会混淆事情,例如静态初始化程序 block 和对静态字段的初始分配。如果类的这些调用方法,这些方法是在尚未完全初始化的类上下文中执行的,这可能会导致意外行为。

关于java - 自实例化机制/概念在 Java 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8583506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com