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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戎石锁 中级黑马   /  2012-8-13 19:44  /  1739 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

private Son(){}
private static Son son=new Son();
public static Son getInstance(){
   return son;
}
static有什么作用啊?
求解答

多线程问题
是不是用实现接口runnable可以实现的同步 用继承Thread也一定能也可以做到,反之亦然??
还有例如其他的一些接口类和主类也是一样??

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
第一个问题:你那是设计单例类的方法:
1,构造函数私有,不让其在外面生产实例
private Son(){}
2,此类必须要有一个实例
private static Son son=new Son();
3,必须给外部调用此唯一的实例的方法,但是此类不能被实例化,只能通过对象调用该方法,所以方法要静态,又由于静态方法只能访问静态的内容,所以类中创建的对象要变成静态static的
public static Son getInstance(){
    return son;
}

第2个问题:
目前实现多线程的方法就是有两个
1,继承Thread,但是此方法不是再继承别的类
2,实现implement接口,可以继承别的类
所以一般实现多线程多用第2种方法

评分

参与人数 1技术分 +2 收起 理由
张_涛 + 2 赞一个!

查看全部评分

回复 使用道具 举报
private Son(){}
private static Son son=new Son();
public static Son getInstance(){
   return son;
}
static有什么作用啊?
答:当成员被static静态修饰后,除了可以被对象调用外,还可以直接被类名调用。而没有被static修饰的成员,必须建立了对象后,通过对象调用。两种成员的生命周期是不同的。静态变量在类被加载时就存在了,而非静态变量是随着对象的建立才在堆内存中建立存储空间。因为静态方法可以通过类名直接调用,而静态方法先于对象存在,因此静态方法只能访问静态成员。

多线程问题
是不是用实现接口runnable可以实现的同步 用继承Thread也一定能也可以做到,反之亦然??
还有例如其他的一些接口类和主类也是一样??
答:多线程可以通过继承Thread类或实现Runnable接口两种方法实现 ,但继承方式产生的子类,只能有Thread类作为父类,而实现Runnable接口方式产生的对象所属的类,可以继承自其他类。多线程主要是要运行其中的run方法,用实现Runnable接口的方式产生多线程会使程序更易懂,类与类之间的关系更紧密和清晰,所以一般用这种方式。用继承方式实现的多线程可以用实现接口方式实现,但用实现接口方式实现的多线程,用继承方式就不一定适用了,因为要创建的对象可能已经是继承了其他类的功能。
       在选择用继承还是实现接口的时候,要考虑要产生的子类与父类或接口的关系,继承是 is a 关系,实现是 like a 关系。如果只是要某一个功能,而关系不是很密切的话,则选用实现接口的方式。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马