Toolkit tk = Toolkit.getDefaultToolkit();
为什么不能用:
Toolkit tk = new Toolkit();
Toolkit是抽象类,所以不能用new Toolkit()实例化对象。
但是Toolkit有静态方法getDefaultToolkit(),通过这个方法可以获取到Toolkit的对象。
单例设计模式,某个类的构造方法被私有化了,被private了,这样的话在外部就没办法直接new一个对象出来。那么怎么实例化它呢?此类中还提供了一个静态方法来调用他的构造方法(private的方法在自己的类中是可以访问的),此静态方法返回一个此类的对象。这种设计模式在java中很常见,叫做单例设计模式,为什么采用这种设计模式呢?比如一个工具对象,你new多了没用!它只是能帮你返回一些系统信息,不能帮你储存数据,不能帮你干别的事儿你也不能对它做什么修改,那么它就不需要有很多个,一个项目中有一个就够你用了,多的话只是空浪费内存浪费系统资源。那么怎么能不让用户new出来很多这样的对象呢?那就是方法私有化,然后提供一个静态的这样的方法可以返回一个对象,但是在返回之前是有判断的,如果你的程序中已经有这样的对象了(你调用过这个静态方法而且在此作用域中对象还有用),那它就把这个对象返回给你,如果没有的话,再给你new一个。这样的话,你就是调用一万个此静态方法,系统中在同一个作用域里面,也只会有一个这样的对象存在了。