错误信息:
TestInterface.java:7: 类 Valueable 是公共的,应在名为 Valueable.java 的文件中声

public interface Valueable{
       ^
TestInterface.java:12: 类 Protectable 是公共的,应在名为 Protectable.java 的文件
中声明
public interface Protectable{
       ^
2 错误

我把接口和实现接口的类放在一个java文件中,命名为:TestInterface.java,出现上面的错误。
但如果把接口和实现它的类分开,那么就没有错误,这是为什么 ?

配置环境:jdk1.6
编辑工具:ultraEdit
//创建抽象类Animal
abstract class Animal{
public abstract void sleep();
public abstract void talk();
}
//创建接口
public interface Valueable{
public abstract double setValue(double value);
//public double getVaule();
}
//创建接口
public interface Protectable{
public abstract boolean IsOrNotProtect(boolean protect);
}
//创建金丝猴类继承自Animal实现Valueable和Protectable
class GoldenMonkey extends Animal implements Valueable,Protectable{
   public void sleep(){
    System.out.println("挂在树上");
  }
  public void talk(){
   System.out.println("吼叫");
  }
  public double setValue(double value){
   return value;
  }
  public boolean IsOrNotProtect(boolean protect){
   return protect;
  }
}
class TestInterface{
public static void main(String[] args){
GoldenMonkey gm=new GoldenMonkey();
gm.sleep();
gm.talk();
 }
}

解决方案 »

  1.   

    最外层的类或接口只能有一个public的
    比如:
    文件名:test1.java
    public class test1{ }
    public class test2{ }  //错误文件名:test1.java
    public class test1{ }
    class test2{ }  //正确你只能把那个与文件名相同的类或接口定义为public的或者不写。
    你这段代码中把interface前面的public去掉就行了
      

  2.   

    一个文件只能有一个public类,并且它的名字要和类名相同。
    你的类名是TestInterface.java,那么只能将TestInterface类设置为public,其他的访问权限要小于public ,比如private package(默认)
      

  3.   

    一个文件只能有一个public类,并且它的名字要和类名相同。把interface前面的public去掉就行了 ,基础啊 
      

  4.   

    晕倒
    一个.java 文件只能有一个 public 类,且文件名必须为 public 类类名.java
    而接口是特殊的类,且必须是 public 型的,即使你不写 public 也是 public 的
      

  5.   


    abstract class Animal{ 
    public abstract void sleep(); 
    public abstract void talk(); 

    //创建接口 
     interface Valueable{ 
    public abstract double setValue(double value); 
    //public double getVaule(); 

    //创建接口 
     interface Protectable{ 
    public abstract boolean IsOrNotProtect(boolean protect); 

    //创建金丝猴类继承自Animal实现Valueable和Protectable 
    class GoldenMonkey extends Animal implements Valueable,Protectable{ 
      public void sleep(){ 
      System.out.println("挂在树上"); 
      } 
      public void talk(){ 
      System.out.println("吼叫"); 
      } 
      public double setValue(double value){ 
      return value; 
      } 
      public boolean IsOrNotProtect(boolean protect){ 
      return protect; 
      } 

    public class TestInterface{ 
    public static void main(String[] args){ 
    GoldenMonkey gm=new GoldenMonkey(); 
    gm.sleep(); 
    gm.talk(); 

    }这样就可以了。把interface 前面的public 去掉就OK了。
    一个java文件中只能有一个pulbic的类
      

  6.   

    接口默认不是public的,接口中的成员与方法默认是public的
      

  7.   

    接口中的成员默认是PUBLIC的吧
      

  8.   

    接口的成员是默认的public ,但是接口不一定是public~~