完全正確就是五句
public ClassTwo()
public ClassOne()
這兩個是構造器,每一次new ClassOne 和ClassTwo 的時候都會執行,這是默認的動作,
你可以看一下java的構造器是怎麼工作的。
ClassOne classone = new ClassOne() ;
This is a ClassOne
ClassTwo classtwo = new ClassTwo() ;
This is a ClassOne
This is a ClassTwo
classone.printString("你好") ;
Print from ClassOne printString:你好
classtwo.printString("你好")
Print from ClassTwo printString:你好
public ClassTwo()
public ClassOne()
這兩個是構造器,每一次new ClassOne 和ClassTwo 的時候都會執行,這是默認的動作,
你可以看一下java的構造器是怎麼工作的。
ClassOne classone = new ClassOne() ;
This is a ClassOne
ClassTwo classtwo = new ClassTwo() ;
This is a ClassOne
This is a ClassTwo
classone.printString("你好") ;
Print from ClassOne printString:你好
classtwo.printString("你好")
Print from ClassTwo printString:你好
This is a ClassOne
This is a ClassOne
This is a ClassTwo
Print from ClassOne printString:你好
Print from ClassTwo printString:你好因为,执行ClassTest的main()时,第一句创建classone 实例,会调用ClassOne类的构造方法,打出第一句话;而“ClassTwo classtwo = new ClassTwo() ;”语句执行时调用ClassTwo类的构造方法,但是由于它是ClassOne的子类,而Java的构造方法会嵌套调用的缘故,会先调用ClassOne的构造方法,输出第二行,然后调用ClassTwo的构造方法,输出第三行,后两行就很容易理解了。
ClassOne classone = new ClassOne() ;
因为是NEW新创建的类所以
程序执行ClassOne的构造函数,所以打印
This is a ClassOne
接着执行
ClassTwo classtwo = new ClassTwo() ;
因为ClassTwo继承了ClassOne
因此ClassOne的构造函数再次的执行
打印
This is a ClassOne
接着打印
This is a ClassTwo
classone.printString("你好") ;
这个打印
Print from ClassOne printString:你好
没话说吧,理所当然
classtwo.printString("你好") ;
这句执行的时候由于ClassTwo 对ClassOne
的public void printString(String Str)
函数进行了重载
所以此时调用的是ClassTwo 的printString()
所以得到
Print from ClassTwo printString:你好
OK,搞定收工!
不过我从问题看,提问者实在是个初学者,现在的首要任务,实际不是运行一些sample程序,而是要踏踏实实的好好看基本的oop方面的书籍,继承只是一个最基本的概念。一遍不懂,再看一遍,我相信总有入门的那一天。