6-10匿名内部类和playBall(Ball ball)问题
//接口Ball public interface Ball { //创建抽象方法play():void void play(); }
//创建类BallTest public class BallTest implements Ball { // 创建成员内部类Inner_m public class Inner_m{ public void play(){ System.out.println("成员内部类"); System.out.println("打篮球"); } } // public Inner_m getInner_m(){ // return new Inner_m(); // } // 创建方法内部类 public void info(){ class Inner_f implements Ball{ public void play(){ System.out.println("**************"); System.out.println("成员内部类"); System.out.println("打篮球"); } } new Inner_f().play(); } // 定义一个方法void playBall(Ball ball),调用play()方法 public void playBall(Ball ball){ ball.play(); } public void play(){ } }
//测试类 public class Test { public static void main(String[] args) { //完成成员内部类内部测试 BallTest one = new BallTest(); BallTest.Inner_m myBall=one.new Inner_m(); myBall.play(); //完成方法内部类测试 one.info(); //完成匿名内部类测试 one.playBall(new BallTest(){ public void play(){ System.out.println("**************"); System.out.println("匿名内部类"); System.out.println("打排球"); } }); } }
想请问一下为什么BallTest类中要写playBall这个函数,以及匿名内部类为什么要那么写(无论是new Ball()还是new BallTest()为什么都可以编译成功?)
38
收起
正在回答
2回答
playBall(Ball ball)这个方法的作用就是打球,具体打什么球要看传入的参数是什么类型的Ball,所以Ball的实现类很重要,如果参数是篮球,那么这个方法就是打篮球。同样,如果是乒乓球,那么这个方法就是打乒乓球。这个就是多态的体现,所以Ball这个接口还是有用的。
至于匿名内部类为什么这么写,这个就是java的语法规则的问题了,语法规定就是可以的。
祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星