JAVA 过来看看这题 继承里关於对象初始化的
来源:百度知道 编辑:UC知道 时间:2024/05/23 19:11:12
class ObjectCreation {
TestClass testClass = new TestClass("fieldValue");
static TestClass testClass2 = new TestClass("staticValue");
static {
testClass2.test();
}
public ObjectCreation() {
System.out.println("ObjectCreation init");
}
ObjectCreation(String name) {
System.out.println("ObjectCreation " + name + " init");
}
}
class ChildObjectCreation extends ObjectCreation
{
public static void main(String[] args)
{
ChildObjectCreation childObjectCreation=new ChildObjectCreation("child");
}
}
class TestClass {
public TestClass(String name) {
System.out.println("TestClass " + name + " init");
}
void test() {
System.out.println("makeInner() invoked");
}
}
为什麽只运行静态对象和静态块就出现
java.lang.NoS
你的ObjectCreation没有带参数的构造方法~~
ChildObjectCreation继承了ObjectCreation
ChildObjectCreation childObjectCreation=new ChildObjectCreation("child"); 实例化对象childObjectCreation时构造方法也应是不带参数的
改为
ChildObjectCreation childObjectCreation=new ChildObjectCreation();
即把参数去掉~~
你的文件名是啥? main方法所在的类,必须和文件名相同才能被自动运行。
=========================
你理解有误,只要你运行main,那么只有和文件名相同的那个类的main才会被运行。 他所在的类不一定是public的。
.子类本身没有带参数的构造方法,如果要用,要通过子类调用父类的
class ChildObjectCreation extends ObjectCreation {
public ChildObjectCreation(String name){
super(name);
}
public static void main(String[] args) {
ChildObjectCreation childObjectCreation =
new ChildObjectCreation("child");
}
}
.如果不这样写, new的时候就不要带参数, 用子类的默认构造方法
class ChildObjectCreation extends ObjectCreation {
public static void main(String[] args) {
ChildObjectCreation childObjectCreation =
new ChildObjectCrea