super关键字与单例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super关键字与单例相关的知识,希望对你有一定的参考价值。
super关键字:
Super关键字作为父类对象和选择父类构造器使用。与this关键字类似,只不过是this代表当前对象和转发构造器,说的简单点就是super就是用来做与父类相关的访问调用的,super关键字只能在实例方法和构造器中使用,不能在静态方法和main方法中使用。Super关键字加 . 用来调用父类的方法。例如:
此时super相当于代表着父类对象来调用这个方法。
super写在子类构造器用于调用父类构造器的话,只能写在第一行代码上。使用super选择父类构造器只能写在构造器内,不能写在方法、main方法内。super();写法就是用于选择父类构造器,括号里传递什么参数类型就调用拥有什么类型的构造器。例如:
使用super调用父类方法时,先访问最近继承的那个父类,如果这个父类没有这个方法就会一直往上调用直到找到为止。
如果是所有的父类都有被调用的那个方法,就会调用最近的一个 。例如:
设计模式:
Java中共有23种设计模式,大致分为三类:创建类、行为类、结构类。
单例设计模式:
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式是用来使得一个类只产生一个对象,使这个对象成为系统中唯一的实例。代码的写法是首先需要将构造器私有化,私有化构造器的目的是不让外部构建这个类的对象,然后申请一个静态属性,属性的类型就是这个类名,在这个属性里新建一个对象,这样在类加载的时候就会构建对象,最后写一个静态方法将这个对象返回出去。
单例模式的优点:
1.在内存中只有一个对象,节省内存空间。
2.避免频繁的创建销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。
适用场景:
由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使用单例模式的场景:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
5.以及其他我没用过的所有要求只有一个对象的场景。
单例模式注意事项:
1.只能使用单例类提供的方法得到单例对象,不要使用反射,否则将会实例化一个新对象。
2.不要做断开单例类对象与类中静态引用的危险操作。
3.多线程使用单例使用共享资源时,注意线程安全问题。
单例模式的代码写法:
称之为单例三部曲
1.构造器私有化
2.私有静态属性里新建一个对象
3.一个公开的静态方法,以自己的实例为返回值,返回出去这个实例
例如:
本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1974048
以上是关于super关键字与单例的主要内容,如果未能解决你的问题,请参考以下文章
flutter 中factory(构造方法上的唯一对象) 与单例模式
Java面向对象--单例(Singleton)设计模式和main方法