站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题这段代码编译能通过么??

这段代码编译能通过么??

摘要: 这段代码编译能通过么??


interface Beta{}

class Alpha implements Beta
{
String testIt()
{
return -#34;Tested-#34;;
}
}
public class Test
{
static Beta getIt()
{
return new Alpha();
}
public static void main(String []args)
{
Beta b = getIt();
System.out.println(b.testIt());
}
}



放进去试试就知道了....


当然不能,你的Test中还有静态方法,所以就要求Test是静态类。


编译提示的是找不到b.testIt()方法

按imA(男的不会,会的不男) 的说法 在Test类前加了个static
多了一行错误  提示 modifier static not allowed here 那静态类怎么定义....

我觉得是动态绑定的问题,b.testIt()调用的应该是父类(这里就是指接口Beta了)的testIt()方法,但是接口Beta中没有这个方法  所以报错了

不知道是不是这样


晕,看错了。

就是你说的原因,你的Beta接口没有定义testIt方法。虽然你实例化的是Alpha类,但是你定义的
类型是Beta,所以当然按照Beta的规则来定义。


当然不能,你的Test中还有静态方法,所以就要求Test是静态类。


至于这句话我说错了。
没有这个要求,我把static和abstract给记混了。


是还有抽象方法的类必须是抽象类。

不好意思,没走脑子


顺便帮我把这个版面的另个题看下  40分全给你了  呵呵


当然报错
Beta接口里面根本没有testIt()

在Beta接口加上 String testIt(){} 就可以了


接口中的方法能有body么????
很多地方怕面对的问题........

我觉得要想通过编译要这样写:
interface Beta
{
  String testIt();
}

class Alpha implements Beta
{
String testIt()
{
return -#34;Tested-#34;;
}
}
public class Test
{
static Beta getIt()
{
return new Alpha();
}
public static void main(String []args)
{
Beta b = getIt();
System.out.println(b.testIt());
}
}

这样通过b就可以调用子类中的testIt()方法了,因为重写了也就是实现了接口中的
testIt()方法,是这样吧......

是我写错了 不好意思


↑返回目录
前一篇: 帮忙看下
后一篇: 如何隐藏父类中的某个方法或属性