老师们请指导一下,卡在这儿了
public Object info() {
class Inner_f implements Ball{
@Override
public void play() {
System.out.println("**********");
System.out.println("方法内部类:");
System.out.println("打乒乓球");
}
}
return new Inner_f().play();
}
PlayBall(new Ball(){
@Override
public void play() {
System.out.println( "**********");
System.out.println("匿名内部类:");
System.out.println("打排球");
}
});
正在回答
您好,匿名内部类应写在Test类中,可以参考下面的代码:
BallTest bt = new BallTest();
bt.info();
bt.PlayBall(new Ball(){
@Override
public void play() {
System.out.println("*********");
System.out.println("匿名内部类:");
System.out.println("打排球");
}
});
祝学习愉快~
针对你提供的代码,下面的代码是修改过的,具体看注释部分
public void info(){//Object info() {改过 class Inner_f implements Ball { @Override public void play() { System.out.println("**********"); System.out.println("方法内部类:"); System.out.println("打乒乓球"); } } //play()方法无返回值,这么调用肯定不对,把info()方法前的Object改为void //return new Inner_f().play();info和play方法都只是输出信息,不需要返回值。 //如果想使用返回值的话,info和play方法的返回值一致就可以了 new Inner_f().play(); } //palyBall是个方法,所以前面要有返回值 //PlayBall(new Ball(){错误的 public void playBall(Ball ball){ ball.play();//按题目要求,此处只需要直接调用play()方法 }
另外,下面是题目需求3,你只完成了中间的需求,其他两个未完成
3. 分别通过成员内部类、方法内部类以及匿名内部类完成接口实现
1)在BallTest中,创建成员内部类 Inner_m 实现接口Ball,在类中重写 play( ) 方法,输出两条信息,分别为"成员内部类:"和"打篮球"
2)在BallTest中, 创建成员方法 info() ,在方法中创建方法内部类 Inner_f 实现Ball接口,重写 play( ) 方法,输出三条信息,分别为"**********","方法内部类:" 和 "打乒乓球"
3)在测试类Test中通过匿名内部类实现接口Ball,并重写 play( )方法,输出两条信息,分别为 "**********","匿名内部类:" 和 "打排球"
希望下次能贴完整的代码,这样的话方便为你调试,我现在只能是把你的代码放到一个新建的类中,这样和你的问题可能会存在误差。
祝学习愉快!
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星