为什么会报错,怎么解决?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | //测试类 public class Test { public void getMotion(Ball b1) { b1.play(); } public static void main(String[] args) { //完成成员内部类内部测试 BallTest.Inner_m b1= new BallTest(). new Inner_m(); b1.play(); //完成方法内部类测试 BallTest lili= new BallTest(); lili.info(); //完成匿名内部类测试 Test t1= new Test(); t1.getMotion( new Ball(){ public void play() { System.out.println( "***************" ); System.out.println( "匿名内部类" ); System.out.println( "打排球" ); } }); } } |
这个位置的方法内部类一直报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | //创建类BallTest public class BallTest{ // 创建成员内部类Inner_m public class Inner_m implements Ball{ public void play() { System.out.println( "成员内部类:" ); System.out.println( "打篮球" ); } } // 创建方法内部类 public Object info(){ class Inner_f implements Ball{ public void play(){ System.out.println( "*****************" ); System.out.println( "方法内部类:" ); System.out.println( "打乒乓球:" ); } } return new Inner_f().play(); } // 定义一个方法void playBall(Ball ball),调用play()方法 public void playBall(Ball ball) { ball.play(); } } |
1 2 3 4 5 | //接口Ball public interface Ball { //创建抽象方法play():void void play(); } |
0
收起
正在回答
1回答
同学,你好!如下图所示,return返回的是调用内部类的play()方法后的结果,而play()方法的返回值是void,也就是没有返回值,所以会报错。
改正后的代码如下:将info方法前的Object改为void,去掉return
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧