完全正確就是五句
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:你好

解决方案 »

  1.   

    会,正确结果应该是打出这五句:
    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的构造方法,输出第三行,后两行就很容易理解了。
      

  2.   

    程序从MAIN执行。
    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,搞定收工!
      

  3.   

    楼上的说得很好.
    不过我从问题看,提问者实在是个初学者,现在的首要任务,实际不是运行一些sample程序,而是要踏踏实实的好好看基本的oop方面的书籍,继承只是一个最基本的概念。一遍不懂,再看一遍,我相信总有入门的那一天。