public interface IAdd{
public void AddNum(int srcNum);
}
public class MyAdd implements IAdd {public void AddNum(int srcNum){srcNum=srcNum+2;
System.out.println("srcNum+2="+srcNum);
}}public class MyAdd2 implements IAdd{
public void AddNum(int srcNum){
srcNum=srcNum+10;
System.out.println("srcNum+10="+srcNum);
}public static void main(String[] args){
MyAdd x=new MyAdd(3);
MyAdd2 y=new MyAdd2(3);
}}

解决方案 »

  1.   

    还是出错:
    G:\job\java\example\IAdd>javac interface.java
    interface.java:26: 'class' or 'interface' expected
    public static void main(String[] args){
                  ^
    1 error
      

  2.   

    interface IAdd{
    void AddNum(int srcNum);
    }
    class MyAdd implements IAdd { public void AddNum(int srcNum){ srcNum = srcNum + 2;
    System.out.println("srcNum+2="+srcNum);
    }
    }
    public class MyAdd2 implements IAdd{
    public void AddNum(int srcNum){
    srcNum = srcNum + 10;
    System.out.println("srcNum+10="+srcNum);
    }

    public static void main(String[] args){
    MyAdd x = new MyAdd();
    x.AddNum(3);
    MyAdd2 y = new MyAdd2();
    y.AddNum(3);
    }
    }
      

  3.   

    你的程序出现三个错误:
    1. 一个文件里面只能有一个public 类
    2. 你定义的类的构造方法都是无参数的,而你定义类的对象的时候
       MyAdd x=new MyAdd(3);
       MyAdd2 y=new MyAdd2(3);
       都带有参数,错误。
    3. 你把类的对象的定义和方法的调用搞错了。应该为:
       MyAdd x = new MyAdd();
       x.AddNum(3);
       MyAdd2 y = new MyAdd2();
       y.AddNum(3);
      

  4.   

    interface IAdd{
    void AddNum(int srcNum);
    }
    class MyAdd implements IAdd { public void AddNum(int srcNum){ srcNum = srcNum + 2;
    System.out.println("srcNum+2="+srcNum);
    }
    }
    public class MyAdd2 implements IAdd{
    public void AddNum(int srcNum){
    srcNum = srcNum + 10;
    System.out.println("srcNum+10="+srcNum);
    }

    public static void main(String[] args){
    MyAdd x = new MyAdd();
    x.AddNum(3);
    MyAdd2 y = new MyAdd2();
    y.AddNum(3);
    }
    }javac MyAdd2.java
    java MyAdd2运行结果:
    srcNum+2=5
    srcNum+10=13
      

  5.   

    你保存的java源文件可以用关键字interface命名吗?换个名字试啦
      

  6.   

    楼主看你下面这东西public static void main(String[] args){
    MyAdd x=new MyAdd(3);
    MyAdd2 y=new MyAdd2(3);
    }放在外面耷拉着像什么样子,赶紧收回去:D
      

  7.   

    楼主:
     HawaiiLeo(罗马数字) 给你指出的三个错误说得很好,你把错误改正后就不会出错了
      

  8.   

    你要将interface和另外两个类分别放在不同的三个文件中
    再用编译器编译。
      

  9.   

    在Java中,所有的代码数据都是放置在类中的, 你的main函数是独立的,不在一个class中!
      

  10.   

    那main函数,可以放在第一个类MyAdd中吗?
    在public class MyAdd2 implements IAdd中
    只能在MyAdd2类中用public?为什么要加这个public呢,好像也没有类访问他呀!
    很菜,先谢谢大家了!
      

  11.   

    这个名字可以换其他的吗?只能叫MyAdd2。java吗?难道和其他一般的类一样吗?
      

  12.   

    interface IAdd{
    void AddNum(int srcNum);
    }
    class MyAdd2 implements IAdd{
     private int i;
     public MyAdd2(int i) {
      i=i;
      }
    public void AddNum(int srcNum){
    srcNum=srcNum+10;
    System.out.println("srcNum+10="+srcNum);
    }

    }
    public class MyAdd implements IAdd {

    private int i;
     public MyAdd(int i) {
      i=i;
     
      }
    public void AddNum(int srcNum){ srcNum=srcNum+2;
    System.out.println("srcNum+2="+srcNum);

    }



    public static void main(String[] args){
    MyAdd x=new MyAdd(3);
    x.AddNum(3);
    MyAdd2 y=new MyAdd2(3);
    y.AddNum(3);

    }
    }运行结果:
    srcNum+2=5
    srcNum+10=13
      

  13.   

    public static void main(String[] args){
    MyAdd x=new MyAdd(3);
    MyAdd2 y=new MyAdd2(3);
    }把这句话放在一个类里面就可以了
      

  14.   

    看了你们的讨论,我收获非常的大,谢谢了,罗马数字总结如下,请大家指正;1G:\job\java\example\IAdd>javac interface.java
    interface.java:26: 'class' or 'interface' expected
    public static void main(String[] args){
                  ^
    1  error
     这个错误提示是指 main函数需要属于一个class或者interface2  一个源程序文件里面最多只能有一个最Public 类,但是可以没有public类3 如果没有明确指出构造函数,那么就采用了默认的构造函数来new一个对象,这个时候默认的构造对象是没有参数的,所以new的时候就不能带参数4 青古兄的程序可以顺利执行,但是MyAdd x=new MyAdd(3) 和 x.AddNum(3)里面的3没有任何关系,把程序改成MyAdd x=new MyAdd(4);
    x.AddNum(3);
    MyAdd2 y=new MyAdd2(5);
    y.AddNum(3);
    也能够得出同样的结果
    不知以上的观点是否则很正确,晚上回家编译试试看。我也是刚刚学习的,以后少不了要麻烦大家,还往不啬赐教!!!!谢谢
      

  15.   

    另外shuneng() 说的要放成分别的不同的几个文件也是对的,想想看,如果好几个类,放在同一个文件中,那么怎么取文件名呢?不知道我说得是否正确?
      

  16.   

    刚刚试了一下,青古兄的那个编译没有通过。错误代码如下
    D:\javacode>javac *.java
    MyAdd2.java:13: cannot resolve symbol
    symbol  : constructor MyAdd (int)
    location: class MyAdd
                    MyAdd x = new MyAdd(3);
                              ^
    MyAdd2.java:15: cannot resolve symbol
    symbol  : constructor MyAdd2 (int)
    location: class MyAdd2
                    MyAdd2 y = new MyAdd2(3);
                               ^
    2 errors把原程序中的
    MyAdd x=new MyAdd(3);
    x.AddNum(3);
    MyAdd2 y=new MyAdd2(3);
    y.AddNum(3);在新建对象的时候的参数3 去掉,就可以编译通过,不知道为什么?
      

  17.   

    青古兄的程序段编译没有问题,而且确实如我所想的,MyAdd x=new MyAdd(3);MyAdd2 y=new MyAdd2(3);中的参数可以改称任意的整数,只要在表达范围内就可以了。
    我昨晚上之所以编译出错,是因为把青古兄的构造函数的存放顺序弄错了,但我认为这不是引起错误的原因,看上面的错误提示也不象,不过还是不知道到原因所在。btw 本来昨天晚上就因该贴这个帖子,但是社区又不允许连续3次发铁,郁闷。
      

  18.   

    要关联的话,请看:
    interface IAdd{
    void AddNum();
    }
    class MyAdd2 implements IAdd {
    public    int i;
     public MyAdd2(int j) {
      i=j;
      }
    public void AddNum(){
    i=i+10;
    System.out.println("srcNum+10="+i);
    }

    }
    public class MyAdd  implements IAdd   {

    public  int i;
     public MyAdd(int j) {
      i=j;
     
      }
    public void AddNum(){ i=i+2;
    System.out.println("srcNum+2="+i);

    }



    public static void main(String[] args){
    MyAdd x=new MyAdd(3);
    x.AddNum();
    MyAdd2 y=new MyAdd2(3);
    y.AddNum();

    }
    }