class Alpha
{
String name = "Alpha";
Alpha()
{
print();
}
void print()
{
System.out.println("Alpha Constructor");
}
}
class Beta extends Alpha
{
int i = 5;
String name = "Beta";
public static void main(String[] args)
{
Alpha a = new Beta();
a.print();//Line1 executes Beta constructor
System.out.println(a.name);//Line 2 displays Alpha instance variable
}
void print()
{
System.out.println(i);
}
}
此程序成功编译并显示以下输出。
0
5
Alpha
问题
a)我不明白为什么alpha的构造函数没有首先被执行。
我相信“super()”会首先被每个子构造函数隐式调用...对吗?。
b)如果beta的构造函数已经执行,那么为什么打印“5”?(输出中的第二行)
第三行我有点理解(即alpha自己的变量将显示出来,因为还没有对“a”实例变量进行强制转换)
class Alpha
{
String name = "Alpha";
Alpha()
{
print();
这里的这个实际上调用了beta.print()
,因为它的@override
是alpha.print()
。由于首先调用基类构造函数,所以beta
部分在这里尚未初始化,因此它从...
}
void print()
{
System.out.println("Alpha Constructor");
}
}
class Beta extends Alpha
{
int i = 5;
这行代码尚未执行。类主体内的初始化在超类构造函数(super()
)之后但在同一类的构造函数主体之前执行。
String name = "Beta";
public static void main(String[] args)
{
Alpha a = new Beta();
a.print();//Line1 executes Beta constructor
在这里,当测试版(A
)的初始化完成时,它将打印5。
System.out.println(a.name);//Line 2 displays Alpha instance variable
}
而这就是所说的方法其实是beeing叫的:
void print()
{
System.out.println(i);
}
}
初始化/调用顺序:
object.object()
alpha.
alpha.
beta.print()
重写alpha.print()
(打印beta.i
,它仍然为0(默认值))问题内容: 考虑下面的代码 基于我对类成员初始化和构造函数执行顺序的理解。我期望输出是 因为我相信类成员甚至在调用main方法之前就已初始化。但是当我运行程序时,我得到以下输出 我的困惑是,尽管Meal()Lunch()和PortableLunch()在Bread()Cheese()和Lettuce()之前运行,即使它们的构造函数被调用。 问题答案: 这些是实例字段 它们仅在创建实例时存在(执行)
我实现了以下promise函数,比如 cart.getbasket(req) Cart.UpdateBasket(req) Cart.UpdateDefaultShipport(req) cart.GetBasketObject(basket) 当前我执行代码时使用 我读过关于的文章,并想把它用作逻辑的流程,但当我使用时,它并不像预期的那样工作,因为我看到each的
问题内容: 如何构建接收另一个点(x,y)并复制其值的复制构造函数? 我决定签名:,但我不知道该写些什么… Point类看起来像: 我试过了: 但我几乎可以肯定我会做得更好。 n 问题答案: 不,您的尝试 绝对没问题…(我已经更正了参数类型。) 我很想进行make 和final的操作,并且使该类final的操作,但这是因为我喜欢不可变的类型。其他人肯定有不同意见:) 在继承层次结构上进行克隆比较棘
问题内容: 使用Promises时,为什么不能在代码库的其他地方触发并定义? 我不明白为什么,应该在声明诺言的地方本地化逻辑。这是疏忽大意,还是强制执行此参数有好处吗? 我相信执行程序功能应该是可选的,并且它的存在应该确定promise是否封装了解决方案。没有这样的授权,promise的可扩展性就更大,因为您不必立即启动异步。承诺也应该是可重置的。这是1档开关,1或0 或。可以附加许多平行和顺序的
本文向大家介绍C++构造函数初始化顺序详解,包括了C++构造函数初始化顺序详解的使用技巧和注意事项,需要的朋友参考一下 1.构造函数、析构函数与拷贝构造函数介绍 构造函数 1.构造函数不能有返回值 2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 3.创建一个对象时,系统自动调用构造函数 析构函数 1.析构函数没有参数,也没有返回值。不能重载
问题内容: 我实现了此处描述的副本构造函数。但是问题仍然是,当我更新时,会将相同的更新应用于。所以,我不明白我的代码有什么问题? 问题答案: 在复制构造函数中,您只是在进行浅表复制,而您需要进行深表复制: 在这里,您仍在复制的引用,该引用仍指向same 。您也应该对其进行修改以创建列表的副本。可能还需要像下面这样在arraylist中创建元素的副本: