A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪平乐 高级黑马   /  2013-5-8 15:58  /  2072 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汪平乐 于 2013-5-9 09:05 编辑

想输出开不同的车,但在这里卡了半天,请大虾帮吗!
  1. class Car{
  2.     void driveCar(Bus bus){}
  3. }
  4. interface Bus{
  5.     void driveBus();
  6. }
  7. class Test{
  8.     static void drive(){
  9.         Car car = new Car();
  10.         car.driveCar(new Bus(){ //参数类型的匿名内部类
  11.             public void driveBus(){
  12.                 System.out.print("开不同的车");
  13.             }
  14.         });
  15.     }
  16. }
  17. class Run{
  18.     public static void main(String[] args){
  19.         Test.drive();
  20.     }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 还是方法没调用

查看全部评分

13 个回复

倒序浏览
class Car{

    void driveCar(Bus bus){ bus.driveBus();}   //调用开车方法。其它地方不用改

}
回复 使用道具 举报
好吧,LZ,我只能这样: (期待其他大神来解决你,不过能解决LZ这种思路的应该不会太多,O(∩_∩)O~,开玩笑啊,最近常一个人面对电脑泡论坛什么的挺无聊的,所以喜欢调侃人,O(∩_∩)O~)。
说问题,1、实现 interface Bus接口,或者说创建它的匿名内部类,然后直接调用复写的方法(这个不说了,应该懂);
2、参数类型的匿名内部类,这个我真心不懂能这样用,我最近学到的应该只有 接口类型比较器(也就是创建实现comparator的匿名内部类,不过将它传给TreeSet等集合) 或者是 文件比较器(自己起的名字,File类中的listFiles(FileFilter filter) 方法),也是直接实现FileFilter接口的匿名内部类。
3、传奇版坑人的方法如下 : (这样就肯定能输出那就话)
————————————
package hehe;
import java.util.ArrayList;
class Car{
    void driveCar(Bus bus){                System.out.print("开不同的车");   }
}
interface Bus{
    void driveBus();
}
class Test{
    static void drive(){
        Car car = new Car();
        car.driveCar(new Bus(){ //参数类型的匿名内部类
            public void driveBus(){}  });
    }
}
class MathDemo{
    public static void main(String[] args){
        Test t = new Test();
        t.drive();
    }
}
回复 使用道具 举报
沙发已出现大神了,O(∩_∩)O~............
我的回答你就当学习常用的参数类型匿名内部类的情况吧。
回复 使用道具 举报
看了半天有点乱,那个匿名内部类new Bus()真的可以么,Bus不是个接口么,怎么能定义对象呢
回复 使用道具 举报
问题解决请编辑改为已解决,有疑问可以继续追问
回复 使用道具 举报
殇_心。 发表于 2013-5-8 16:12
class Car{

    void driveCar(Bus bus){ bus.driveBus();}   //调用开车方法。其它地方不用改

能告诉我为什么吗?为什么我不能再主函数中调用...主函数能调用的话怎么弄,小弟愚昧!
回复 使用道具 举报
zms2100 发表于 2013-5-8 16:26
好吧,LZ,我只能这样: (期待其他大神来解决你,不过能解决LZ这种思路的应该不会太多,O(∩_∩)O~,开玩笑 ...

你LS的方法调用可以....不过还是要谢谢
回复 使用道具 举报
汪平乐 发表于 2013-5-9 09:07
你LS的方法调用可以....不过还是要谢谢

O(∩_∩)O~.......我懂的,就是不能通过复写那个接口,输出不同的语句,沙发的答案确实很简朴、实用。
回复 使用道具 举报
汪平乐 发表于 2013-5-9 09:02
能告诉我为什么吗?为什么我不能再主函数中调用...主函数能调用的话怎么弄,小弟愚昧! ...

因为你传进去的是作为参数,而沙发(一楼)给的答案就是让接收参数的方法自动处理那个参数,这个跟我说的比较器(匿名内部类是一样的),主函数应该是不能直接操作作为参数的动作,所以我LS的回答第一条才建议你复写那个接口,然后直接调用。(这是两种不同的做法)
回复 使用道具 举报
zms2100 发表于 2013-5-9 09:34
因为你传进去的是作为参数,而沙发(一楼)给的答案就是让接收参数的方法自动处理那个参数,这个跟我说的比 ...

收到,谢谢!我QQ358998716
回复 使用道具 举报
汪平乐 发表于 2013-5-9 09:02
能告诉我为什么吗?为什么我不能再主函数中调用...主函数能调用的话怎么弄,小弟愚昧! ...

也可以。但你这样写。 我只能按着你的改了。
回复 使用道具 举报
殇_心。 发表于 2013-5-9 10:22
也可以。但你这样写。 我只能按着你的改了。

那你帮忙优化下....:handshake
回复 使用道具 举报
汪平乐 发表于 2013-5-9 10:58
那你帮忙优化下....

那个class Car 实现接口  Bus   不就行了?
不是太懂楼主你的要求。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马