//Animal.java定义interface public interface Animal { int BIG_TYPE=5; void sleep(); void eat(); void breath(); } //Tiger.java实现接口的方法 public class Tiger implements Animal { public void sleep{ System.out.println("the tiger sleep"); } public void eat{ System.out.println("the tiger eat"); } public void breath{ System.out.println("the tiger breath"); } } //测试类test.java public class test { public static void main(String[] args){ Tiger tiger=new Tiger(); tiger.sleep(); tiger.eat(); tiger.breath(); } } 运行test.java出现错误 at test.main(test.java:5) 初学java,请各位看看要怎么改,接口和类之间要怎么调用?问题可能很白痴,各位见笑了。 |
|
写法是没什么太大问题的,只是这样你没有使用接口而已。如果使用多态这样比较好
Animal?animal = new Tiger(); 报错感觉是没有编译 |
|
Unresolved compilation problems: 没有编译的问题!
|
|
+1 Unresolved compilation problems:没有编译! is undefined for the type 没找到类型 |
|
为啥没有编译啊?有什么错吗?Animal animal = new Tiger();具体怎么使用,还是报错啊? at test.main(test.java:5) |
|
代码没问题,我试了,正常运行
不知道你这是啥原因 |
|
30分 |
lz你这问题我真是无力吐槽了。。。 楼上都什么眼神。。。楼主,我也是无力吐槽了。。。 其他都是正确的,实验过了。 |
你是用IDE编写的代码吗?如果没用,可能是你接口和实现类没有编译好。。。
|
|
怎么会有人说测试过了。。。
public class Tiger implements Animal { public void sleep(){ System.out.println(“the tiger sleep”); } public void eat(){ System.out.println(“the tiger eat”); } public void breath(){ System.out.println(“the tiger breath”); } } 这些方法都没括号。。。 |
|
这样new实现类,接口就没用了,接口已经实现了,直接调用接口就可以了。
|
|
哈哈,是大家把问题想得太复杂了,我刚看书学习,没注意到,多谢提醒! |
|
刚开始学,出错时好事,多出错,才可以多收获。
多细心,多写。 |
|
|
|
我是用IDE编译的 |
|
多谢支持 |
|
各位,已经加上括号了,但是还是出现问题。
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Animal cannot be resolved to a type at Tiger.<init>(Tiger.java:2) at test.main(test.java:4) |
|
这个就没用到接口的概念呀
|
|
和一楼说的没关系的,就算你写成Tiger tiger=new Tiger();也没问题,对的。 把你接口的方法前加上public。 |
|
接口中的方法默认被定义为public吧,不需要显示添加。问题在于,Animal.java是Interface,现在新建个Class,把Animal.java的内容拷贝进去就运行成功了。不知道为什么? |
|
接口只是定义了框架,具体实现不是需要类来完成吗?刚学,不了解。 |
|
客气了。 |
|
大哥,java默认的作用域自古以来就是friendly,从来没有默认为public的说法。。。 你重新建的接口是不是放在和tiger.java一个包内了?因为friendly的作用域是同一个包中。能理解不。 |
|
这眼神好。。 |
|
楼主用的什么IDE啊
|
|
[quote大哥,java默认的作用域自古以来就是friendly,从来没有默认为public的说法。。。
你重新建的接口是不是放在和tiger.java一个包内了?因为friendly的作用域是同一个包中。能理解不。 ] 我建的接口Interface是和tiger.java在一个包内啊。既然friendly的作用域是同一个包中,我新建的接口Interface Animal.java,实现类Tiger.java,还有测试类Test.java都在同一个包中,为什么运行失败呢?而我新建一个Class,把接口Animal.java的内容拷进去就能运行成功呢?我还是不理解,抱歉。 |
|
我建的接口Interface是和tiger.java在一个包内啊。既然friendly的作用域是同一个包中,我新建的接口…… 你说的这种情况不太可能吧。。。复制个新接口就搞定了?你仔细对比下,肯定有区别的,如果看不出来,贴出来我帮你看看。 |
|
语法都错了,实现方法没有括号,你是用文本写的吗?最好用ide写。
|
|
10分 |
你定义了接口,然后实现类实现它,那接口就已经被实现了,就可以用了,就这么简单。 |
没有什么问题,会不会是路径下有重名的.class.检查下,有木有其他程序之前也使用过animal的类。针对eclipse这些集成环境,其他无视~
|
|
我重新建了一个Interface,拷贝进去,又可以了。不知道咋回事。多谢啊! |
|
感谢各位的热心帮助,学到不少东西。
|
|
虽然解决了皆大欢喜,但还是觉得事情听蹊跷的。。。本来坏的东西,重写一遍就好了!编译器什么时候变这么先进了- -~泼了点冷水不好意思哈 |
|
同新手,多学习
|