- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有这个代码:
public class A {
private State _state;
public abstract class State {
protected void setState(State newState) {
_state = newState;
}
}
public A() {
_state = new AbstractState(this);
}
}
public abstract class AbstractState extends A.State {
AbstractState(A a) {
a.super();
}
}
我很难理解它是如何工作的。
因此,当创建 A 对象
时,它会创建一个 AbstractState
对象,并以相同的 A 对象
作为参数。接收 A 对象
的 AbstractState
构造函数调用 a.super()
。
据我了解,a.super()
调用了A a
的父类(super class)的构造函数,即Object
,对吗?那么有什么意义呢?
我知道AbstractState
是一个抽象类。子类可以是:
public class StateOne extends AbstractState {
StateOne(A a) {
super(a);
}
}
问题仍然存在。
最佳答案
From my understanding,
a.super()
calls the constructor of the super class of A a, which is Object, right? So what's the point?
我想你是在问为什么你必须写 a.super()
而不是super()
.
首先,它不是调用 A
的构造函数或 A
的父类(super class)。 super(...)
构造函数中的调用始终表示您正在实例化的类的直接父类(super class)中的构造函数。在这种情况下,父类(super class)是内部类 A.State
.
什么a.super()
实际上说的是“使用 a
作为我的封闭实例来调用我的父类(super class)构造函数”。
需要不寻常的语法,因为父类(super class)是内部类,当实例化内部类时,它需要知道它所在的封闭类的实例。
在您的示例中,State
被声明为内部类(即不是 static
),因此 setState
方法可以看私有(private)_state
某些实例的变量封闭类( A
)。 a.super()
是必要的,这样 JVM 才能知道 A
的哪个实例。 是封闭的。
关于java - object.super() 的作用是什么?如何创建国家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47372392/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!