接口中创建void的方法 方法内部类实现不了 接口中创建String的方法,匿名内部内又实现不了
//接口Ball public interface Ball { public String play(); } //BallTest类 public class BallTest { //无参的构造方法 public BallTest(){ } public void playBall(Ball ball){ } public Inner_m GetInner_m(){ return new Inner_m(); } //成员内部类 public class Inner_m implements Ball{ @Override public String play() { // TODO Auto-generated method stub return "成员内部类:\n打篮球"; } //方法内部类 } public Object info(){ class Inner_f implements Ball{ @Override public String play() { // TODO Auto-generated method stub return "方法内部类:\n打乒乓球"; } } return new Inner_f().play(); } //匿名内部类 } //主方法 public class Test { public static void main(String[] args) { // TODO Auto-generated method stub BallTest ba=new BallTest(); BallTest.Inner_m ba1=new BallTest().new Inner_m(); System.out.println(ba1.play()); System.out.println(ba.info()); System.out.println(new Ball(){ @Override public String play() { // TODO Auto-generated method stub return "匿名内部类:\n打排球"; } }); } }
正在回答
这样,一步步看。
1、首先第一个问题,你的输出结果最后一行,是这样的
com.ball.Test$1@2a139a55
这是输出了一个对象,原因是没有调用方法,在Test中的这段代码加一个方法调用:
如果不加方法调用,则只是创建了一个对象。
2、第二个问题是方法内部类中是否没法调用没返回值的。这个其实看应用场景。下面是把你的代码中这块单独拿了出来。
因为info这个方法是有返回值的,所以最后需要调用一个有返回值的内部类的方法。如果把Object改为void,也就是info方法没有返回值,那么这个时候内部类中就需要一个无返回值的方法,或者有返回值的方法也行,那么直接调用把信息输出就行了,总之就不需要return语句了。
3、匿名内部类中是否能调用有返回值的,这个其实就是第一个问题,可以调用有返回值的,只是你没有调用方法而已。
你好!我在方法中创建了一个void的方法,可以实现,代码如下:
public interface Ball {
public String play();
public void display();
}
public class BallTest {
//无参的构造方法
public BallTest(){
}
public void playBall(Ball ball){
}
public Inner_m GetInner_m(){
return new Inner_m();
}
//成员内部类
public class Inner_m implements Ball{
@Override
public String play() {
// TODO Auto-generated method stub
return "成员内部类:\n打篮球";
}
@Override
public void display() {
// TODO Auto-generated method stub
}
//方法内部类
}
public Object info(){
class Inner_f implements Ball{
@Override
public String play() {
// TODO Auto-generated method stub
return "方法内部类:\n打乒乓球";
}
@Override
public void display() {
// TODO Auto-generated method stub
}
}
return new Inner_f().play();
}
//匿名内部类
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
BallTest ba=new BallTest();
BallTest.Inner_m ba1=new BallTest().new Inner_m();
System.out.println(ba1.play());
System.out.println(ba.info());
System.out.println(new Ball(){
@Override
public String play() {
// TODO Auto-generated method stub
return "匿名内部类:\n打排球";
}
@Override
public void display() {
// TODO Auto-generated method stub
}
});
}
}
我就是在接口中加了一个方法,然后在各个实现类中实现了一下该方法。
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星