⑴ synchronized
synchronized是解决多线程中同步问题的一个关键字。比如火车站卖票,如果不同步的话,很可能当一个窗口卖完了某一张票后,另一个窗口依然显示有那张票,但是取的时候就取不到了。加入synchronized后当一个窗口访问这张票的时候另一个窗口不能访问这张票。不知道这样解释你懂不懂?
下面是singleton:
public class Singleton {
private Singleton s;
private Singleton()
{
}
public static Singleton getSigleton()
{
if(s==null)s=new Singleton();
return s;
}
}
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。
上面的程序就是一个单例模式,这个类的构造方法用private修饰了,所有在外边都不能调用,也就不能new Singleton();得到实例,那么
想得到实例就得调用它的静态方法getSigleton();即Singleton.getSigleton();就会返回一个Singleton的实例,注意此方法中的语句,即如果你是第一次调用这个方法那么它会给你new一个实例,以后再调用得到的都是这个实例,也就是说从始至终就只有一个Singleton的实例,这就是单例模式。
⑵ java构造方法只好用public修饰吗
这个是根据你的需求来决定的、你要是不在类外使用构造可以不用public的。
例如:
public class User{
private int id;
private User(){
}
public User(int id){
this.id = id;
}
}
当然了你要是这样写了、你就不能在类外(new User();)实例化这个类了,只能使用new User(id);
⑶ java中构造函数不能用哪些修饰符修饰
java中构造函数不能使用其他修饰符进行修饰,如sataic ,final,synchronized,native,abstract等修饰符都不可以修饰构造方法。
又及:构造方法虽然看起来没有返回类型,但其实他返回的是这个对象的引用,因类型固定所以不加。如果构造方法修饰符为私有,则是单例模式。
java中构造方法可以使用任意一种访问修饰符,public,protected,private和默认(friendly)
⑷ 一般构造方法我们都是用default或者public去修饰,那为什么有的constuctour会用private去修饰呢
为了不让这个类可以被实例化,JAVA通常是在单例模式中运用。而C++则是构成所谓的nonble对象。
单例模式你可以大概理解成:这个类在整个环境中扮演的是大管家的角色,只需要有一个实例就够了。例如:
classT{
staticTuniqueInstance=newT();
publicTgetInstance(){returnT;}
privateT(){}
}
⑸ java构造方法只能用public修饰吗
不是的啊,也可以是private 的,使用private 时,多用来实现单例模式。
也不是static 的,构造方法有java 虚拟机调用。
------解决方案--------------------------------------------------------
将构造方法设定为public,只是为了限制对象的实例化,是为了屏蔽掉外部通过new 实例当前对象。
------解决方案--------------------------------------------------------
构造方法有他的作用。
也有static 的。用法不同。
------解决方案--------------------------------------------------------
构造方法可以用 public、private、protected 修饰,但不能用 static,因为构造方法是类
创建实例时,自动调用的;若构造方法定义为私有,便不能有继承子类,因为子类使用父类构造方法
------解决方案--------------------------------------------------------
四个作用域都可以有的。
public,外部可以自由访问
private,在单例模式中使用,即对外开放build 接口
------解决方案--------------------------------------------------------
不同声明类的访问权限:
1.public: 同一个类 同一个包 子类 其他包中的类
2.protected: 同一个类 同一个包 子类
3.private: 同一个类
至于你说的static,这个是用来声明静态类的,也就是说不用实例化类就可以使用,一般用
于修饰静态变量和静态方法。
⑹ 单例模式
单例模式最核心是,该类只有一个实例。
你在任意地方调用 EagerSingleton.getInstance(); 总是获取到同一个实例。
这个实例和普通的实例是一摸一样,普通实例一般是调用一次创建一次,但单例模式的实例总是只有一个。
你在10个地方调用 EagerSingleton.getInstance(),得到的EagerSingleton cm都是同一个实例。
⑺ Java中的构造方法可以被只可以被哪些修饰词修饰说出所有的能修饰构造方法的修饰词,谢谢了
构造方法有4种修饰,public、protected、默认、private。public的构造方法你可以用 A a =new A(); 这样来创建对象 而protected、默认修饰的构造方法你只能在这个类里进行创建该对象。 private的就不能new来创建对象了。构造方法本来就是为了方便在其他类创建不同的对象,所以构造方法一般用public修饰,protected、默认修饰符很少见。而private基本不用来修饰构造方法。希望对你有所帮助。
⑻ 单例模式中 private static Singleton instance = new Singleton() 很多不用final修饰,
你首先要明白final修饰变量的功能是,一次初始化不能再被修改,既然是私有变量,就只考虑内部对这个变量的处理了,如果需要修改就不加final
而在单例模式中,如果存在释放资源的情况下,就不能加final修饰了,比如针对你贴的这个单例,如果提供方法
publicvoidreleaseInstance(){
if(instance!=null){
instance=null;
}
}
释放资源之后,如果需要重新使用这个单例,就必须存在重新初始化的过程,所以不能加final,对于不需要释放资源的情况,可以加final
总而言之,要不要加final修饰,可以根据情况而定
⑼ 构造方法的访问权限都可以使什么的啊 可不可以是默认的啊
当然可以了
虽然没试过 不过应该是没有protected 因为构造方法是不能被继承的