初学JAVA 对一些东西不是很了解,谁能告诉我下面这道题最后的结果是什么? 为什么是? 步骤是如何进行的? 最好能一步一步讲解一下
abstract class Base
{ String var="Base'sVariable";
abstract void method1(); void method2(){System.out.println("call Base method2");} void test1()
{
method1();
} void test2()
{
method2();
}
} public class Extension extends Base
{
String var = "Extension's Variable";
void method1()
{System.out.println("call Extension's method1");}
void method2()
{System.out.println("call Extension's method2");} void test3()
{
String var="Extension Local variable";
System.out.println("varis"+var);
System.out.println("this.var is"+this.var);
System.out.println("super.var is"+super.var); method2();
this.methoad2();
}public static void main(String args[])
{
Extension ex = new Extension();
ex.tes1();
ex.tes2();
ex.tes3();
}
}
abstract class Base
{ String var="Base'sVariable";
abstract void method1(); void method2(){System.out.println("call Base method2");} void test1()
{
method1();
} void test2()
{
method2();
}
} public class Extension extends Base
{
String var = "Extension's Variable";
void method1()
{System.out.println("call Extension's method1");}
void method2()
{System.out.println("call Extension's method2");} void test3()
{
String var="Extension Local variable";
System.out.println("varis"+var);
System.out.println("this.var is"+this.var);
System.out.println("super.var is"+super.var); method2();
this.methoad2();
}public static void main(String args[])
{
Extension ex = new Extension();
ex.tes1();
ex.tes2();
ex.tes3();
}
}
call Extension's method2
varisExtension Local variable
this.var isExtension Local variable
super.var isBase'sVariable是这个结果吗 初学 望高人给正确答案
test1()
test2()而不是method1(),method2()
Extension ex = new Extension();
ex.tes1();
ex.tes2();
ex.tes3(); 通过调试,来区分什么情况会执行基类的方法,什么情况是执行的扩展类的方法;
{ String var="Base's Variable";
abstract void method1(); //需要子类实现的抽象方法 void method2(){System.out.println("call Base method2");} void test1()
{
method1();
} void test2()
{
method2();
}
} public class Extension extends Base
{
String var = "Extension's Variable"; //覆盖父类的变量
void method1() //实现父类的方法
{System.out.println("call Extension's method1");}
void method2() //重写父类的方法
{System.out.println("call Extension's method2");} void test3()
{
String var="Extension Local variable";
System.out.println("varis"+var);
System.out.println("this.var is"+this.var);
System.out.println("super.var is"+super.var); method2();
this.methoad2();
} public static void main(String args[])
{
Extension ex = new Extension();
//1.先调用父类的构造方法
//2.调用子类的构造方法
ex.tes1(); //打印 call Extension's method1
ex.tes2(); //打印 call Extension's method2
ex.tes3();
//打印 varis Extension Local variable
//打印 this.var is Extension's Variable
//打印 super.var is Base's Variable
}
}
}
你方法没有错!
必须实现抽象方法 method1();
ex.tes1();
打印System.out.println("call Extension's method1");重写method2();
ex.tes2();
打印System.out.println("call Extension's method2");重写后的值
method3()
//*******************************
System.out.println("varis"+var); //打印"Extension's Variable"子类定义的值
System.out.println("this.var is"+this.var); //打印基类var值Base'sVariable
System.out.println("super.var is"+super.var); //继承基类,同上method2(); //打印未继承的值call Extension's method2
this.methoad2(); //打印基类的值 call Base method2刚才没看到
abstract void method1();
void method2(){System.out.println("call Base method2");}
这2个方法
结果:
call Extension's method1
call Extension's method2
varisExtension Local variable
this.var isExtension's Variable
super.var isBase'sVariable
call Extension's method2
call Extension's method2
就是子类复写父类的方法
call Extension's method1
call Extension's method2
varisExtension Local variable
this.var isExtension's Variable
super.var isBase'sVariable
call Extension's method2
call Extension's method2说明七楼的解释有问题:(this.methoad2(); //打印基类的值 call Base method2 System.out.println("this.var is"+this.var); //打印基类var值Base'sVariable) this调用的是Extension类的ex对象的属性和方法。