黑马程序员技术交流社区
标题:
下面的问题出在哪里,找不到!
[打印本页]
作者:
心的方向
时间:
2013-11-23 21:31
标题:
下面的问题出在哪里,找不到!
interface Utility{}
class Phone implements Utility
{
public void use()
{
System.out.println("using phone");
}
}
public class Test
{
public static void main(String[] args)
{
Utility u = new Phone();
u.use();
}
}
作者:
零下五度的水
时间:
2013-11-23 21:41
接口里没有方法,你调什么
作者:
心的方向
时间:
2013-11-23 21:49
我不是new的一个类吗,生成了一个实例啊?
作者:
樊志伟
时间:
2013-11-23 22:24
你的Utility接口里面没有任何方法。
你这里犯了个错误,混淆了实现接口和继承类的概念。
实现接口是指在接口中有抽象方法,用一个类将这个接口中的抽象方法都实现了。
而继承的话,父类中可以没有子类中的方法。
你的问题改成下面的这段代码就ok了
interface Utility
{
void use();
}
class Phone implements Utility
{
public void use()
{
System.out.println("using phone");
}
}
class Test
{
public static void main(String[] args)
{
Utility u = new Phone();
u.use();
}
}
复制代码
作者:
习嘻嘻
时间:
2013-11-23 22:34
多态中成员方法的编译运行规则是:编译看左边,运行看右边,
也就是 Utility u = new Phone();的左右,左边为父接口,但是你的接口里
没有该方法的声明,因此编译会出错。
你在接口中声明个抽象方法
interface Utility
{
void use();
}
就可以了。
作者:
中关村阿旺
时间:
2013-11-23 22:35
你的这句话:Utility u = new Phone();,其中Utility是一个接口,Phone类实现了这个接口,你这是多态。接口型引用指向子类对象,不能调用子类中的特有方法。你的use()方法只在Phone类中有,而接口中没有。所以编译错误。你可以在接口中添加use()方法,也可以把代码改成:Phoneu = new Phone();就没有问题了。你试试。
作者:
FFF
时间:
2013-11-24 00:26
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2