问题描述
- 分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入( )
-
- 分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入( )
class A {
public void test() {
System.out.println(""A类的test()方法"");
}
}
class B extends A {
public void test() {
System.out.println(""B类的test()方法"");
}
public static void main(String args[]) {}
}
A. A a = new B();
a.test();
B. A a = new A();
a.test();
C. B b = new A();
b.test();
D. new B().test();
- 分析如下Java代码,如果想在控制台上输出“B类的test()方法”,则在主函数应填入( )
解决方案
A和D
D:没什么可说的,就是B类的Test方法调用
A:多态,如果子类有重载,则会调用等号右边类的方法。也就是B类的Test方法
解决方案二:
A和D;
你可以运行一下看看的或者教你只要看new B()这部分就可以了。
如果回答对你有帮助请采纳
解决方案三:
你这个是继承也就是说B的内容大于或等于A的所以调用A来实例化B是不可能的因为B继承了A所以A是B的一部分可以用B来实例化A的。
如果回答对你有帮助请采纳
解决方案四:
AD。继承和覆盖的问题。
A a = new B();
a.test();
a的运行期类型是B,编译期类型是a,运行的时候会从运行期类型里找test方法,找不到找父类
new B().test();
这个简单,实例化一个B类型的实例,然后调用test方法(当然也就是覆盖之后的test了)
解决方案五:
A,父类引用指向子类实例,所以执行的是子类方法。
D
解决方案六:
A、D。。。。。。。
解决方案七:
A 和 D
子类属性 属于 父类属性……
解决方案八:
A和D A是由于多态,它会先指向子类的引用。
解决方案九:
public class text1 {
public void a1(){
System.out.println(""1111"");
}
}
class text2 extends text1{
public void b1(){
System.out.println(""222222"");
}
}
class text3{
public static void main(String[] args) {
text2 t = new text2();
t.a1();
t.b1();
text1 t1 = new text1();
t1.a1();
t1.b1();
}
}
还是得调用子类, 因为一代更比一代强。
解决方案十:
A和D。。。。。。。。。。。。。。。。。