单子 Singleton 设计模板
所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
步骤:(重要,理解)
1.不能在类的外部通过 new 关键字的方式创建新的实例:构造器私有化
2.在类的内部创建实例
3.为了让类的外部能够访问到类的内部创建的实例,该实例必须使用 static 修饰
4.不能允许在类的外部修改内部创建的实例的引用。需要把该属性用private 修饰
5.为了让外部能够进行读,添加对应的get 方法
关键字 final(最终的)
在Java中声明类、属性和方法时,可使用关键字final来修饰。
final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。
final标记的类不能被继承。提高安全性,提高程序的可读性。
final标记的方法不能被子类重写。增加安全性。
final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才能使用。
抽象类(abstractclass)
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。
用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。
抽象方法:只有方法的声明,没有方法的实现。以分号结束。
abstract int abstractMethod1( int a );
含有抽象方法的类必须被声明为抽象类。
抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。
不能用abstract修饰私有方法,构造方法,静态方法(因为:私有方法和构造方法不能被继承,而静态方法不属于面向对象)
接口(只有:抽象方法和常量的集合)
接口是定义动作指令
实现是具体执行动作
1. 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果
3. 用 interface 来定义
4. 接口中所有的成员变量都默认是由public static final 修饰的。在声明变量时必须直接赋值,因为接口没有构造方法。
5. 接口中的所有方法都默认是由public abstract 修饰的,接口没有构造方法。
6. 实现接口使用implements 关键字。若一个类既实现接口,又继承了父类,需要把 extends 关键字放在前面,即先继承父类,后实现多个接口,一个类可以实现多个无关的接口,若实现多个接口,使用“,”分割。
7. 接口也可以继承另一个接口,使用extends 关键字。
关于接口的提示:
1. 实现接口的类中必须提供接口中所有方法的实现内容。若该类为抽象类,另当别论。
2. 多个无关的类可以实现同一个接口。
3. 与继承关系类似,接口与实现类之间存在
4.如果你继承的接口功能只是你要实现的功能一个部分,那么你得继承多个接口,我来举个例子来说明一下::门大家都很熟悉。那么门有好多种,有带把手的,有带报警的。那么现在我想要这两种功能都有的门,那怎么办,对于把手接口和报警接口,无论你实现哪一个都不行,所以只有俩个一起实现才能,这样接口多继承性就体现出来了。