分析如下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();
A和D
D:没什么可说的,就是B类的Test方法调用
A:多态,如果子类有重载,则会调用等号右边类的方法。也就是B类的Test方法
A和D;
你可以运行一下看看的,或者教你只要看new B()这部分就可以了。
如果回答对你有帮助,请采纳
你这个是继承,也就是说B的内容大于或等于A的,所以调用A来实例化B是不可能的,因为B继承了A,所以A是B的一部分,可以用B来实例化A的。
如果回答对你有帮助,请采纳
A、D。。。。。。。
A 和 D
子类属性 属于 父类属性……
A和D A是由于多态,它会先指向子类的引用。
A,D。继承和覆盖的问题。
A a = new B();
a.test();
a的运行期类型是B,编译期类型是a,运行的时候会从运行期类型里找test方法,找不到找父类
new B().test();
这个简单,实例化一个B类型的实例,然后调用test方法(当然也就是覆盖之后的test了)
A,父类引用指向子类实例,所以执行的是子类方法。
D
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。。。。。。。。。。。。。。。。。
B b=new B()
b.test();
就可以了
public class Text {
public static void main(String[] args) {
A a=new A();
A b=new B();
a.test();
b.test();
}
}
class A {
public void test() {
System.out.println("A类的test()方法");
}
}
class B extends A {
public void test() {
System.out.println("B类的test()方法");
}
}
这是方法覆盖,破解方法:用那个类的方法,new哪个类,因为是继承 所以父类可以new子类。