编程题6-10 info()方法使用Object做返回值

编程题6-10 info()方法使用Object做返回值

//接口Ball
public interface Ball {
    // 创建抽象方法play():void
    void play();
}

//创建BallTest类
public class BallTest {
    // 创建成员内部类Inner_m
    public class Inner_m implements Ball {
        @Override
        public void play() {
            System.out.println("成员内部类:");
            System.out.println("打篮球");
        }
    }

    // 创建方法内部类
    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();
    }

    // 定义一个方法void playBall(Ball ball),调用play()方法
    void playBall(Ball ball) {
        ball.play();
    }

}

//创建测试类
public class Test {

    public static void main(String[] args) {
        //完成成员内部类内部测试
        BallTest.Inner_m myInner_m=new BallTest().new Inner_m();
        myInner_m.play();
        //完成方法内部类测试
        BallTest bt=new BallTest();
        bt.info().play();
        
    }

}

BallTest类中的info方法使用Object作为返回值类型,return new Inner_f();  在Test类中,BallTest bt=new BallTest();    bt.info().play();此处为什么会报错呢?http://img1.sycdn.imooc.com//climg/5a3fcfb80001d5b111040422.jpg

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

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

2回答
痞子姚 2018-02-07 16:02:58
//创建方法内部类
public void info(){
class Inner_f implements Ball{
//引用接口,重写方法play()
@Override
	public void play() {
	// TODO Auto-generated method stub
	System.out.println("方法内部类:");
	System.out.println("打乒乓球.");
		}
	}
new Inner_f().play();//不返回值了,直接new 创建实例对象方法,就完了
}


没有马甲线的安琪拉 2017-12-25 14:23:44

play是BallTest的方法,你的代码中,bt.info()返回值是Object,当然无法调取play方法啊。。。

  • 提问者 慕斯卡7306579 #1
    bt.info()返回值是Inner_f的一个对象,Inne_f是有play方法啊。。。
    2017-12-25 15:39:17
  • 嗯,你也知道是Inne_f的方法。。。问题是,Inne_f在Test类里是直接可见的么?更何况,info方法的声明返回的类型是Object,你再把老师上课讲的例子好好看看吧
    2017-12-25 15:44:34
  • 教程里面是有返回值的(String类型),你是没有返回值的(void).19行 public void info() 28行 new inner_f().play() 然后main当中直接 外部类对象.info(),就完了
    2018-02-07 16:01:00
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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