gpt4 book ai didi

java - 赋值运算符和 "this"关键字

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:54 25 4
gpt4 key购买 nike

考虑以下代码片段:

class Parent {
Parent() {
this = new Child();
}
}
class Child extends Parent { }

上面会抛出一个语法错误:赋值运算符的左边必须是一个变量

在java中,this关键字存放的是当前调用对象的内存地址。我希望用类的子类的实例覆盖当前对象。我知道上面的代码片段会引发错误,因为 this 不是变量并且可能是不可变的。

但是,我想知道为什么java不允许上述功能?它有什么缺点吗?

编辑:这个问题是我在引用自然语言处理 (NLP) 上下文时想到的。例如,在法语中,每个动词都必须以“er”、“ir”或“re”结尾。所有动词都有某些共同特征。但是,每个动词都必须是上述三种类型中的一种。因此,在父类“Verb”的构造函数中,我想将创建的对象归类为“ErVerb”、“IrVerb”或“ReVerb”。

最佳答案

有两种情况:

如果您让 this 被实例化为任何 Object,不一定是类型层次结构中的一个,那么实例化将无法保证其引用的内容。这打破了几件事,最值得注意的是面向对象编程的整个概念。

如果限制 this 实例化到父类的任何子类,那么该子类构造函数将无限次调用父构造函数,从而导致 StackOverflowError

关于java - 赋值运算符和 "this"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437809/

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