请问老师这为什么会错?

请问老师这为什么会错?

//接口Ball
public interface  Ball {
  //创建抽象方法play():void
	public abstract void play();
}
public class BallTest {
  // 创建成员内部类Inner_m
	public class Inner_m implements Ball{

	@Override
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("成员内部类:"+"\n"+"打篮球");
		
	}
		
	}

	// 创建方法内部类
	public Object info(){
		class Inner_f implements Ball{
			public void play(){
				System.out.println("**********"+"\n"+"方法内部类:"+"\n"+"打乒乓球");
			}
		} 
		 new Inner_f().play();
		 return new Inner_f();
	}

	// 定义一个方法void playBall(Ball ball),调用play()方法
	public void playBall(Ball ball){
		 ball.play();
	}
}
//测试类
public class Test {
	
  public static void main(String[] args) {
		//完成成员内部类内部测试
		BallTest balltest=new BallTest();
		Inner_m ball = balltest.new Inner_m();
		ball.play();
		//完成方法内部类测试
		balltest.info();
		//完成匿名内部类测试
		Test test=new Test();
		balltest.playBall(new Ball(){
			public void play(){
				System.out.println("**********"+"\n"+"匿名内部类:"+"\n"+ "打排球");
			}
		});
	}

}

http://img1.sycdn.imooc.com//climg/5ce0c7dc00011ce804080184.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕珊 2019-05-19 13:41:51

你好!从报错提示看,是Test类的第7行发生错误,提示Inner_m没有定义。Inner_m是在BallTest类中定义的,而不是在Test类中定义。因此,使用的时候要加上外部类的名字。也就是将 Inner_m ball = balltest.new Inner_m();改成:BallTest.Inner_m ball = balltest.new Inner_m();

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_就是这样_1 #1
    可我在eclipseh上运行没有问题啊
    2019-05-19 15:03:27
  • 好帮手慕珊 回复 提问者 qq_就是这样_1 #2
    我在eclipse上运行是有报错的,请问你的JDK是什么版本?祝学习愉快!
    2019-05-19 16:51:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师