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