运行结果: lixinghua
原因:main函数里面,new Student()访问的fun()函数在子类中找不到,则从父类Person中查找;父类中的fun()函数调用当前类的print()函数,所以继续查找父类的print()函数,发现该函数访问权限为private,即不能被子类所继承或覆写,所以最终执行父类的print()函数
执行结果:nanjinqin
原因:main函数里面,new Student()访问的fun()函数在子类中找不到,则从父类Person中查找;父类中的fun()函数调用当前类的print()函数,所以继续查找父类的print()函数,发现该函数访问权限为默认default,即可以被子类所继承或覆写,再去子类找是否有覆写的print()函数,有,则执行子类覆写后的print()函数
执行结果:nanjinqin
原因:main函数里面,new Student()访问print(),即在子类中找到print()方法并执行
执行结果:Exception in thread "main" java.lang.StackOverflowError
原因:main函数里面,new Student()访问print(),即在子类中找到print()方法并执行,执行过程中调用fun()函数,再在当前类(即子类)中找fun()函数,当前类不存在则去父类中寻找并执行fun()函数,父类fun()函数调用当前类(即父类)的print()函数,由于父类的print()函数被子类覆写,于是执行子类覆写后的print()函数,造成对象之间相互引用,最终会导致栈溢出;如果将父类print()函数的public权限修改为private,则直接执行父类print()函数,输出结果为lixinghua
执行结果:lixinghua
原因:main函数里面,new Student()访问子类的print()函数,其中调用了父类的fun()函数并执行结果
执行结果 :nanjinqin
原因:main函数里面,new Student()访问子类的print()函数,其中调用父类的fun()函数,fun函数调用当前类(即父类)的study函数,而study()函数被子类覆写过,所以最终执行子类的study()函数