内容发布更新时间 : 2025/6/18 14:47:38星期一 下面是文章的全部内容请认真阅读。
8、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。
package test1;
class SuperClss //定义父类 {
int x;
SuperClss( ) //父类的构造方法 {
x=10; }
void doClss( ) {
System.out.println(\); } }
class SubClss extends SuperClss //定义子类 {
int x;
SubClss( ) //子类的构造方法 {
super( ) ; x =100; }
//调用父类的构造方法
void doClss( ) //重写父类的doClss方法 {
System.out.println(\); }
void doDemo( ) //演示super和this的方法 {
int x; x=1000;
super.doClss( ); //调用父类的doClss方法 doClss( ); //调用本类的doClss方法
System.out.println(\+super.x); //父类的x System.out.println(\+this.x); //本类的x System.out.println(\+x); //本方法的x } }
public class SuperDemo {
public static void main(String args[ ]) //主方法 {
SubClss s = new SubClss(); s.doDemo(); }
}运行结果: SuperClss.doClass() SubClss.doClss() super.x=10 this.x=100 x=1000
体会:此程序中定义了一个父类,子类SubClss继承了父类SuperClss,在主函数中定义SubClss类对象 s时(即执行语句:SubClss s = new SubClss();时 ),自动调用类SubClss的构造函数SubClss(),再此构造函数中先执行“super( ) ;”语句,这样就调用类SuperClss的构造方法SuperClss( ),因为super来指明超类中的方法。同样在子类方法doDemo( )中,执行语句“super.doClss( );”时,则调用父类的方法doClss( )。如不用super 来指定的话,,则调用的是子类的方法doClss( ),这里子类SubClss()的成员方法doClss( )重写了父类SuperClss( )的成员方法doClss( )。
语句 “System.out.println(\”中super调用的是父类SuperClss的变量x,而语句 “System.out.println(\”中this调用的子类SubClss的变量x, 关键字this和super分别用来指明子