java高手请进

importjava.io.*;interfaceWorker{publicvoiddoSomeWork();}classPlumberimplementsWorker{... import java.io.*;interface Worker{ public void doSomeWork(); }class Plumber implements Worker{ public void doSomeWork(){ System.out.println("水管工"); }class Carpenter implements Worker{ public void doSomeWork(){ System.out.println("木匠"); } class Aworker implements Worker{ public Worker worker; public Aworker(Worker worker){ this.worker= worker; } @Override public void doSomeWork() { // TODO Auto-generated method stub System.out.println("你好!"); worker.doSomeWork(); } } }}public class Test2 { public static void main(String[] args){ Plumber plumber= new Plumber(); Aworker aworker = new Aworker(plumber); aworker.doSomeWork(); }}eclipse的提示是要我新建一个Awork类,,,我新建以后确实没有问题了,这是为什么呢?,弄成下面这样就可以了。。为什么放在同一个java代码里不行 展开
 我来答
jimmyc2006
2013-07-31 · TA获得超过1153个赞
知道小有建树答主
回答量:572
采纳率:100%
帮助的人:640万
展开全部

你是在学习内部类的只是吧?你定义的这3个类的关系是Plumber有内部类Carpenter,Carpenter又有内部类Aworker。所以你声明Aworker的时候应该这样声明:

import java.io.*;

interface Worker {
public void doSomeWork();
}

class Plumber implements Worker {
public void doSomeWork() {
System.out.println("水管工");
}

class Carpenter implements Worker {
public void doSomeWork() {
System.out.println("木匠");
}

class Aworker implements Worker {
public Worker worker;

public Aworker(Worker worker) {
this.worker = worker;
}

@Override
public void doSomeWork() {
// TODO Auto-generated method stub
System.out.println("你好!");
worker.doSomeWork();
}
}
}
}

public class Test2 {
public static void main(String[] args) {
Plumber plumber = new Plumber();
Plumber.Carpenter carpenter = plumber.new Carpenter();
Plumber.Carpenter.Aworker aworker = carpenter.new Aworker(plumber);
aworker.doSomeWork();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BachelorPig
2013-07-31 · TA获得超过187个赞
知道小有建树答主
回答量:192
采纳率:80%
帮助的人:136万
展开全部
你把Aworker放到Carpenter类里了,放到外面就可以了
class Carpenter implements Worker{
public void doSomeWork(){
System.out.println("木匠");
}

}
class Aworker implements Worker{
public Worker worker;
public Aworker(Worker worker){
this.worker= worker;
}
@Override
public void doSomeWork() {
// TODO Auto-generated method stub
System.out.println("你好!");
worker.doSomeWork();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
懂事且健壮灬小喵e
2013-07-31 · TA获得超过756个赞
知道小有建树答主
回答量:575
采纳率:52%
帮助的人:404万
展开全部
一个java文件中 只能有一个 public 的class,接口类默认就是public
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangda146
2013-07-31 · TA获得超过1160个赞
知道小有建树答主
回答量:836
采纳率:0%
帮助的人:569万
展开全部
你把Aworker写到Carpenter类里面去了,成为了一个成员内部类,那么你在Main方法里能直接new它吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式