初学求教!一道练习题

nmywg 2004-06-22 12:09:40
题目是这样的:设计一个接口IAdd,并在其中声明一个方法AddNum(int srcNum),然后设计一个类MyAdd实现这个借口,实现将参数srcNum加2并打印输出的功能,设计另一个类MyAdd2也实现这个接口,并将参数srcNum加10并打印输出。

我的代码如下:
interface IAdd{
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);
}

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

请大家帮我看看,谢谢
...全文
259 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmywg 2004-06-24
  • 打赏
  • 举报
回复
谢谢大家,哪位高手能不能把整个题目中出现的问题给总结一下?包括涉及到的知识点!
nmywg 2004-06-24
  • 打赏
  • 举报
回复
晕。看来还是结了吧!怎么没一个人给总结?
zxh0579 2004-06-24
  • 打赏
  • 举报
回复
青古兄的程序段编译没有问题,而且确实如我所想的,MyAdd x=new MyAdd(3);MyAdd2 y=new MyAdd2(3);中的参数可以改称任意的整数,只要在表达范围内就可以了。


我昨晚上之所以编译出错,是因为把青古兄的构造函数的存放顺序弄错了,但我认为这不是引起错误的原因,看上面的错误提示也不象,不过还是不知道到原因所在。

btw 本来昨天晚上就因该贴这个帖子,但是社区又不允许连续3次发铁,郁闷。
lin6234123456 2004-06-24
  • 打赏
  • 举报
回复
要关联的话,请看:
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();

}


}

zxh0579 2004-06-23
  • 打赏
  • 举报
回复
刚刚试了一下,青古兄的那个编译没有通过。错误代码如下
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 去掉,就可以编译通过,不知道为什么?
zxh0579 2004-06-23
  • 打赏
  • 举报
回复
另外shuneng() 说的要放成分别的不同的几个文件也是对的,想想看,如果好几个类,放在同一个文件中,那么怎么取文件名呢?

不知道我说得是否正确?
zxh0579 2004-06-23
  • 打赏
  • 举报
回复
看了你们的讨论,我收获非常的大,谢谢了,罗马数字总结如下,请大家指正;

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或者interface

2 一个源程序文件里面最多只能有一个最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);
也能够得出同样的结果


不知以上的观点是否则很正确,晚上回家编译试试看。

我也是刚刚学习的,以后少不了要麻烦大家,还往不啬赐教!!!!谢谢
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
public static void main(String[] args){
MyAdd x=new MyAdd(3);
MyAdd2 y=new MyAdd2(3);
}

把这句话放在一个类里面就可以了
lin6234123456 2004-06-23
  • 打赏
  • 举报
回复
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
HawaiiLeo 2004-06-22
  • 打赏
  • 举报
回复
你的程序出现三个错误:
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);
HawaiiLeo 2004-06-22
  • 打赏
  • 举报
回复
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);
}
}
nmywg 2004-06-22
  • 打赏
  • 举报
回复
还是出错:
G:\job\java\example\IAdd>javac interface.java
interface.java:26: 'class' or 'interface' expected
public static void main(String[] args){
^
1 error

nmywg 2004-06-22
  • 打赏
  • 举报
回复
楼上的能说说错的原因吗?
shuneng 2004-06-22
  • 打赏
  • 举报
回复
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);
}

}
nmywg 2004-06-22
  • 打赏
  • 举报
回复
这个名字可以换其他的吗?只能叫MyAdd2。java吗?难道和其他一般的类一样吗?
nmywg 2004-06-22
  • 打赏
  • 举报
回复
那main函数,可以放在第一个类MyAdd中吗?
在public class MyAdd2 implements IAdd中
只能在MyAdd2类中用public?为什么要加这个public呢,好像也没有类访问他呀!
很菜,先谢谢大家了!
eboyzhang 2004-06-22
  • 打赏
  • 举报
回复
在Java中,所有的代码数据都是放置在类中的, 你的main函数是独立的,不在一个class中!
shuneng 2004-06-22
  • 打赏
  • 举报
回复
你要将interface和另外两个类分别放在不同的三个文件中
再用编译器编译。
luiss 2004-06-22
  • 打赏
  • 举报
回复
楼主:
HawaiiLeo(罗马数字) 给你指出的三个错误说得很好,你把错误改正后就不会出错了
binny 2004-06-22
  • 打赏
  • 举报
回复
楼主看你下面这东西

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

放在外面耷拉着像什么样子,赶紧收回去

:D
加载更多回复(3)

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧