当我扩展一些类时,例如:
public class First {
int id;
public First(int _id) {
id = _id;
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class Second extends First {
}
Run Code Online (Sandbox Code Playgroud)
当我只需要做同样的事情时,我必须重新声明第二类的构造函数.我可以:
public Second(int _id) {
super(_id);
}
Run Code Online (Sandbox Code Playgroud)
但每次我更改父构造函数时,都需要编辑所有扩展类的构造函数.
如何完全扩展构造函数?
该死的,不要告诉我手机和天线,我多次使用过OOP.
现在我只问 - 我不能在扩展类上编写公共Class(){}并使用父构造函数吗?
好像我不能.好的.
所以,我正在尝试向NSStackView添加一些视图(在此示例中为NSTextField):
我已将NSStackView实例添加到XIB文件中,并将其作为小部件链接到文档中.在... didLoadNib我这样做:
NSTextField *tf = [[NSTextField alloc] init];
tf.stringValue = @"124";
[tf setFrameSize:NSMakeSize(100, 20)];
[widgets addView:tf inGravity:NSStackViewGravityLeading];
NSLog(@"%f - %d", NSHeight(tf.frame), [tf hasAmbiguousLayout]);
NSTextField *tf2 = [[NSTextField alloc] init];
tf2.stringValue = @"123";
[tf2 setFrameSize:NSMakeSize(100, 20)];
[widgets addView:tf2 inGravity:NSStackViewGravityLeading];
NSLog(@"%f - %d", NSHeight(tf2.frame), [tf2 hasAmbiguousLayout]);
Run Code Online (Sandbox Code Playgroud)
TextFields被放置在StackView中,但是它们被放置在相同的位置,即第二个完全重叠.我仍然可以先通过[space + tab]选择.
这是控制台输出:
2015-06-13 17:11:00.736 celty-test[62306:9217679] 20.000000 - 1
2015-06-13 17:11:00.739 celty-test[62306:9217679] Unable to simultaneously satisfy constraints:
(
"<NSLayoutConstraint:0x608000084bf0 V:[NSStackViewSpacer:0x6080001834d0(>=8)]>",
"<NSLayoutConstraint:0x608000084f10 V:[NSTextField:0x608000183330]-(0)-[NSStackViewSpacer:0x6080001834d0]>",
"<NSLayoutConstraint:0x608000085460 V:[NSStackViewSpacer:0x6080001834d0]-(0)-[NSTextField:0x608000183400]>",
"<NSAutoresizingMaskLayoutConstraint:0x608000084970 h=--& v=--& V:[NSTextField:0x608000183330]-(0)-| …
Run Code Online (Sandbox Code Playgroud)