单例模式+Final+Abstract

单例模式

概述: 一个类,只有一个实例。
单例是数据共享和项目安全(配合同步)的重要手段,单例可减低项目的并发性,增加耦合性。

单例模式语法要求:
1.必须有静态属性
2. 构造方法私有化
3. 获取对象采用静态方法

代码示例(饥汉模式):

public class Singleton {
   public int count;
   private static Singleton instance=new Singleton(10);
   
   private Singleton(int n){
   	this.count = n;
   	System.out.println("count = " + this.count);
   }
	
   public int getCount(){
   	return this.count;
   }
   
   public static Singleton getInstance(){
     return instance.instance;
   }
}

public class TestSingleton{
   public static void main(String[] args){
       Singleton a1 = Singleton.getInstance();
       Singleton a2 = Singleton.getInstance();  
   }
}

Final

final关键字—用于类、方法、变量前。
final类—不可被继承,如java.lang.Math就是一个 final类,不可被继承。
final变量—在初始化后不可改变变量值,用于常量定义。
如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性)。
final方法—不可被覆盖,除了和private一起用。

Final+变量: Final static int i=5;
一加载类就放在方法区的静态数据区,(也有认为放在静态常量池)。
必须显示初始化,不能重复赋值只能赋值一次,不能默认初始化比如final static int i;

Final +全局变量
在堆中开辟空间,它和静态全局变量一样必须立刻显示初始化,它也是不能第二次赋值。

Final+局部变量
它在栈中开辟空间,它可以不用显示初始化,默认初始化就是个垃圾值,它显示初始化也是只能赋值一次,不能二次赋值。

Fianl+对象
在堆中开辟空间,也不能二次赋值,但属性和方法可以重复使用赋值调用。

Abstract

1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。
2、抽象方法必须由子类来进行重写。
3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是 否还包含有其他方法。
4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
5、子类中的抽象方法不能与父类的抽象方法同名。
6、abstract 不能与 final 并列修饰同一个类。
7、abstract 不能与 private、static、final 或 native 并列修饰同一个方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章