6-10作业
这是我的代码,麻烦老师帮我看一下怎么改进呀
Ball.java
//接口Ball
public interface Ball {
// 创建抽象方法play():void
public abstract void play();
}
BallTest.java
//创建类BallTest
public class BallTest {
// 创建成员内部类Inner_m
class Inner_ml implements Ball {
public void play() {
System.out.println("成员内部类:\n打篮球");
}
}
// 创建方法内部类
public void info() {
class Inner_f {
public void play() {
System.out.println("****************");
System.out.println("方法内部类\n打乒乓球");
}
}
new Inner_f().play();
}
// 定义一个方法void playBall(Ball ball),调用play()方法
void playBall(Ball ball) {
ball.play();
}
}
Test.java
//测试类
public class Test {
public static void main(String[] args) {
// 完成成员内部类内部测试
BallTest b = new BallTest();
BallTest.Inner_ml t = b.new Inner_ml();
t.play();
// 完成方法内部类测试
b.info();
// 完成匿名内部类测试
Ball ball = new Ball() {
public void play() {
System.out.println("****************");
System.out.println("匿名内部类\n打排球");
}
};
ball.play();
}
}
另外,还想问一下:为什么Test()里面不需要写“implements Ball”就可以实例化Ball?那什么时候需要写,什么时候不需要写呢?
打开调试之后,控制台会显示:JRE Oracle Corporation/12 is not supported, advanced source lookup disabled. 什么意思呀?怎么解决?谢谢!
正在回答
同学你好,1、implements Ball之后,play方法才是对Ball中play的重写,这里理解的是非常正确的哦!
2、Ball ball = new Ball({·····}) 这是就是一个实现了Ball接口的匿名内部类哦
3、匿名内部类可以实现接口,也可以实现父类,但是不可兼得
这句话的意思是,1)、匿名内部类可以直接通过new一个抽象父类,来实现一个继承父类的类,比如:
在课程案例中 test.getRead(new Person(){
public void read(){
System.out.println("男生喜欢看科幻类书");
}
})
2)、匿名内部类可以直接通过new一个接口,来实现接口,例如本题目中的:
Ball ball = new Ball() {
public void play() {
System.out.println("****************");
System.out.println("匿名内部类\n打排球");
} };
这两者都是都是匿名内部类,但是一个是继承父类(抽象父类) -->new Person(){},另一个是实现接口
-->new Ball(){} 这两个在匿名内部类中不能同时实现,比如:new Person() implement Ball{},这样的写法就是错误的哦!这样会不知道是要继承还是要实现!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
同学你好,1、复制运行同学代码,运行效果没有问题哦!但是根据题目要求:在方法中创建方法内部类 Inner_f 实现Ball接口,重写 play( ) 方法,输出三条信息,分别为"**********","方法内部类:" 和 "打乒乓球"!
所以同学的方法内部类并没有实现Ball接口哦!修改建议如下:
2、匿名内部类这么写是没有问题的,因为是匿名,所以不用写出来类的名字,通过new Ball()就是实现了接口Ball了。而要写implements Ball来实现接口是在类中实现Ball接口!
3、控制台这个语句的意思是jre版本过高,这个语句影响同学的正常测试吗,如果影响建议换一个版本低一点的JDK,如果不影响,同学就这样先用吧!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星