A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘焘 初级黑马   /  2012-7-7 13:20  /  1590 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘焘 于 2012-7-8 21:37 编辑

interface A  // runnable
{
        void run();
}
class B implements A //Thread
{
        B(A a)
        {this.a = a;}
        void run(){}
}
class C implements A
{
        void run(){}
}
class  
{
        public static void main(String[] args)
        {
                C c = new C();
                B b = new B(c);
                b.start();
                System.out.println("Hello World!");
        }
}
B对象建立后是什么?会有两个“run”?

3 个回复

倒序浏览
楼主..你是在玩多线程吗?

创建线程方式一:继承Thread类
1.子类覆盖父类中的run方法,将线程运行的代码存放在run中。
2.建立子类对象的同时线程也被创建。
3.通过调用start方法开启线程。

创建线程的第二种方式:实现Runable接口
1,定义类实现Runnable接口
2,覆盖Runnable接口中的run方法。将线程要运行的代码存放在该run方法中。
3,通过Thread类建立线程对象。
4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
5,调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

回复 使用道具 举报
本帖最后由 黄丽慧 于 2012-7-7 21:25 编辑

楼主,你的这段程序错误百出

interface A  // runnable     这里的A是一个接口,java中的runnable接口是jdk的api,不是自己随便定义的
{
        void run();
}
class B implements A //Thread 你这里是想把B定义成一个线程吧,那就应该继承自Thread啊
{
        B(A a)
        {this.a = a;}// 这里的没看明白楼主是要表达什么???
        void run(){}
}
class C implements A
{
        void run(){}
}
class    //这个地方怎么没有类名啊
{
        public static void main(String[] args)
        {
                C c = new C();
                B b = new B(c);
                b.start();//这个地方start方法是Thread类的方法,你在上面的B,C类都没有继承自Thread类
                System.out.println("Hello World!");
        }
}

另外楼主是想问说,类B创建的实例是否会有两个run方法吗?
从楼主的代码中可以看出,楼主定义了A接口,B实现了A接口,那么B就必须实现run方法,所以肯定是只有一个run方法了。
建议楼主好好看看多线程,还有接口那部分的知识吧,感觉你把这些知识都学混乱掉了。

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这就不是线程,只是普通的方法调用。还有你哪来的start()方法?
implement Runnable接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马