黑马程序员技术交流社区

标题: 求答案详解 [打印本页]

作者: wuchangfeng    时间: 2015-7-18 22:31
标题: 求答案详解
分析如下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 23:05
A
多态,重写,你好好看看多态的概念就懂了
作者: 辉大大    时间: 2015-7-18 23:31
A、D   一个多态,一个匿名对象的使用
作者: wuchangfeng    时间: 2015-7-19 09:22
对于匿名对象还是不太懂,再看下视频吧
作者: wuchangfeng    时间: 2015-7-19 09:23
辉大大 发表于 2015-7-18 23:31
A、D   一个多态,一个匿名对象的使用

对于匿名对象还是不太懂,再看下视频吧
作者: wuchangfeng    时间: 2015-7-19 09:25
751309401 发表于 2015-7-18 23:05
A
多态,重写,你好好看看多态的概念就懂了

主要还是对匿名对象不了解
作者: wing-SF    时间: 2015-7-19 10:00
本帖最后由 wing-SF 于 2015-7-19 10:03 编辑

答案:A、D
A: 父  父=new 子();是可以的,这样会创建一个子类的对象,然后调用该对象的test方法。B: 父  父=new  父();也是编译可以通过的,这样是new了一个父类的对象,并且调用父类的test方法,结果不是我们想要的
C: 子  子=new   父();这样编译时通不过的,子类对象的引用不能指向父类对象
D:   new  子().test();是可以的,这个new 子()会创建一个匿名的子类对象,然后使用"."操作符,调用该子类对象的test方法

作者: wuchangfeng    时间: 2015-7-19 10:13
wing-SF 发表于 2015-7-19 10:00
答案:A、D
A: 父  父=new 子();是可以的,这样会创建一个子类的对象,然后调用该对象的test方法。B:  ...

非常感谢,最近学着感觉没什么思路,好多东西写了不知道什么意思
作者: 辉大大    时间: 2015-7-19 15:27
wuchangfeng 发表于 2015-7-19 09:25
主要还是对匿名对象不了解

匿名对象就是个没名字的对象;
相对于A.  A a = new B();
                a.test();
对于 D来说.  new B().test();就相当于a.test();
      
作者: CLTDEZHUCE    时间: 2015-7-19 16:11
多态,重写
作者: wuchangfeng    时间: 2015-7-19 18:18
CLTDEZHUCE 发表于 2015-7-19 16:11
多态,重写

嗯 刚入门,知识点太多,记不住




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