黑马程序员技术交流社区

标题: 这题不会,大家看看 [打印本页]

作者: liu45495284    时间: 2015-7-18 00:15
标题: 这题不会,大家看看
38.        分析如下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();

作者: 751309401    时间: 2015-7-18 00:38
A
多态,B重写了A的方法
作者: 菩提本无树    时间: 2015-7-18 00:44
楼上说的对
作者: Matrix_heima    时间: 2015-7-18 00:47
A  D都对 A  多肽,编译看左边,运行看右边 D  本类对象调用自己的方法
作者: 溦丨涼    时间: 2015-7-18 00:48
选A,B是建立A类对象,D写法错误(test不是静态的),C没有这种写法
作者: icichacici    时间: 2015-7-18 06:57
A  子类的对象赋予父类的引用,多态的特性。
作者: 蔡锐    时间: 2015-7-18 07:43
A
多态,b重写了a的test方法
作者: 潜力良驹    时间: 2015-7-18 08:11
其实验证对不对的方法就是自己去一个个试,还能自己加深理解.对你学习更有帮助~~~:)
作者: xiaoshaoye    时间: 2015-7-18 08:36
毋庸置疑的 选择  A 和 D     
A  多态写法
D  直接new出对象.方法
作者: 小丑    时间: 2015-7-18 09:04
楼上是对的 A 和 D
作者: fmi110    时间: 2015-7-18 09:07
选 A D
  1. class A
  2. {
  3.         public void test()
  4.         {
  5.                 System.out.println("A类的test");
  6.         }
  7. }
  8. class B extends A
  9. {
  10.         public void test()
  11.         {
  12.                 System.out.println("B类的test");
  13.         }
  14.         public static void main(String[] args)
  15.         {
  16.                
  17.                 A a = new B();  //选项A
  18.                 a.test();
  19.                
  20.                 new B().test(); //选项D
  21.         }
  22. }
复制代码

1.png (1.44 KB, 下载次数: 72)

1.png

作者: 158803629    时间: 2015-7-18 09:59
2楼说的对               
作者: 乔栋    时间: 2015-7-18 10:06
已验证,A,D都可以。A是多态,父类引用指向子类,如果子类覆盖父类方法,那么a.test()执行之类的方法。
作者: 小刘123    时间: 2015-7-18 10:10
Matrix_heima 发表于 2015-7-18 00:47
A  D都对 A  多肽,编译看左边,运行看右边 D  本类对象调用自己的方法

楼上说的对
D的调用:相当于B b=new B(); b.Test();
作者: 帅帅loyal    时间: 2015-7-18 10:52
选AD,这是对的,别听他们乱说
作者: T-l-H、小生    时间: 2015-7-18 11:04
选AD,不解释,这很明显是视频辅导班的试题
作者: 野驴少东    时间: 2015-7-18 14:14
AD盖,好喝的盖
作者: gaoming971366    时间: 2015-7-18 14:27
这道题只能选A,解析一下,A对是多太不需要解释,B运行的结果就是A类的test()方法,C选项如果在new A()前加上B类型,强制转换,还是可以的,D选项,B方法不是Static的,加上静态,选项就对了
作者: aurora_bessie    时间: 2015-7-18 14:56
AD,多态的体现就是父类(或接口)的引用指向自己的子类对象。

作者: 马上添水    时间: 2015-7-18 15:37
完全看不懂
作者: zhwfa1991    时间: 2015-7-18 15:52
AD,一个多态 一个本类对象调用自己的方法
作者: 神兽    时间: 2015-7-18 16:13
A   D  A:多态。D:匿名对象调用自身方法
作者: fantianfei    时间: 2015-7-18 17:01
AD..........
作者: Nemo    时间: 2015-7-18 18:42
A,D都可以
作者: maizi1912    时间: 2015-7-18 18:52
A  是不是向上转型啊   D应该是对的
作者: rose_xiaomei    时间: 2015-7-18 19:45
选A  至于D太高能,是在不明白,楼下大神解释
作者: 陈建民1    时间: 2015-7-18 19:50
我觉得应该是A
作者: 张红(新)    时间: 2015-7-19 00:00
A D都对
A是多态:public void test() 是非静态方法,根据多态中非静态成员函数的特点:编译看左边,运行看右边,可以得知A选项运行的是Test()是B类中的。
D就是本类匿名对象调用本类的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2