public interface Utility {
}class Phone implements Utility {
void use(){
System.out.println("Using Phone");
}
}public class Test {
public static void main(String args[]) {
Utility util = new Phone();
util.use();
}
}
那里出错了?? 晕了?本人新手
}class Phone implements Utility {
void use(){
System.out.println("Using Phone");
}
}public class Test {
public static void main(String args[]) {
Utility util = new Phone();
util.use();
}
}
那里出错了?? 晕了?本人新手
所以util.use(); 会出现错误。
解决办法:你可以在Utility接口中添加use方法的声明
其次, 因为你创建了以个util对象 (Utility util = new Phone();), 你想用util来访问 Phone中的use方法,就会出现错误,所以你必须得对use方法进行声明, 注意, 接口中的方法默认是 public abstract的。
第三, 你光对use方法在接口中声明还不够, 因为Phone中的use方法没有设为public, 注意没有设访问控制的方法是default, 所以你必须给use方法在phone的类中加public.
现在运行一下就没有问题了。interface Utility {
void use();
} class Phone implements Utility {
public void use(){
System.out.println("Using Phone");
}
} public class Test {
public static void main(String args[]) {
Utility util = new Phone();
util.use();
}
}
1. 一个类来实现(implements)一个接口,如果这个类不是虚类(abstract), 这个类就必须实现改接口中的所有方法.
2. 一个类来实现(implements)一个接口,这个类不能变小接口方法的访问控制标示,例如,接口中的方法必须是public,那么实现它的方法也就必须是public, 不能用protect, default(不写就是default)或者private。
代码附下: interface Utility {
//void use();
} class Phone implements Utility {
public void use(){
System.out.println("Using Phone");
}
} public class Test {
public static void main(String args[]) {
Utility util = new Phone();
//util.use();
((Phone)util).use();
}
}
public interface Utility { } 这里会报错
顶一下 5楼的 他的不错
((Phone)util).use() 这里强转下就不会报错了,其实你这个借口没有意思 ,等于脱裤子放屁一样
接口只能看到它自己存在的变量或者方法 实现它的类 新添加的 它就看不到了
因此((Phone)util).use() 强行转换类型 再去掉 interface 前面的public就可以了