抽象 静态 单例

来源:互联网 发布:js then方法 编辑:程序博客网 时间:2024/05/29 07:45

Abstract

抽象类

当基类中存在某些方法一直不会被调用就可以考虑将该方法声明为抽象方法

抽象方法使用abstract修饰,用abstract修饰的方法只能声明不能有实现

抽象方法所在的类必须为抽象类,同样用abstract修饰

抽象类不能被实例化,只能被继承


抽象类里面可以有抽象方法,也可以有没有抽象的方法(抽象类中一样可以有普通方法)


当一个类继承了抽象类的时候,会获取抽象类当中所有的公共成员变量

必须实现抽象类里面所有的抽象方法,否则编译不通过

原因:一个抽象方法没被实现的时候,外界访问会存在错误


抽象方法一样支持方法重载


派生类只能重写实现抽象类当中的抽象方法,不能隐藏方法





抽象类B继承抽象类A,继承之后可以选择实现当中的抽象方法,当抽象类B部分实现抽象类A,此时普通类C继承抽象类B,可以只实现抽象类B里没有实现的抽象方法。

抽象方法和虚方法:

1.抽象方法一定不能有实现,虚方法一定要有实现

2.抽象方法被具体的类继承后,一定要被重写,虚方法可以不重写

3.抽象方法是一种特殊的虚方法,一旦类中有抽象方法,则类必须声明为抽象类,抽象类中可以有虚方法



Static

静态类和静态方法

1.在不需要多个对象个体来协助,直接做这些事情的时候就可以使用静态方法

使用static关键字修饰

普通方法通过实例调用,静态方法通过类调用

类名+只要是静态成员都用static修饰

2.共享数据


非静态和静态成员

1.非静态成员由类的实例对象调用,静态成员由类调用

2.静态成员由类的加载而加载,非静态随着对象的创建而存在

3.静态成员与非静态成员之间的调用:

  -  非静态可以调用静态成员变量

  -  静态只能访问静态成员


静态类:由static关键字修饰 不能实例化

一些公用的变量或者方法可以放在静态类里面,以供其他类使用。例如一些排序算法等,可以把静态类看做是一个工具类,任何地方只要需要都可以调用该类里面的成员,以提高开发效率。

静态构造

格式:static 类名(){};

静态构造在类加载进内存(第一次使用)的时候进行调用

一般用来给静态成员变量赋值

静态类的特点:

1.仅包含静态成员和const修饰的常量

2.不能被实例化

3.是密封的(默认已经是sealed,不能再用sealed修饰)

4.有静态构造方法,但静态构造方法必须是无参数的


单例

是一种设计模式:前人留下来的一些程序设计经验

单例设计模式:一个类只有一个实例对象,不管怎么通过new创建始终都是同一个对象

单例实现需要三种条件:

1.私有化默认构造

2.内建静态实例

3.静态构造方法给实例做初始化

两种方式:

1.默认构造私有化 private 类名(){};

内建静态实例 static + 类名 +instance;

在静态构造方法里面初始化static + 类名(){ instance = new + 类名};

单例命名规范 share + 类名 public static 类名 Share(){return 类名.instance }


2.内建静态实例 private + 类名 + instance

构造方法必须设置为私有 private 类名(){};

为实例初始化  public 类名 + Instance  {

get{if(instance  == null) instance  = new 类名+();

}

Return instance;}

调用: 类名+对象名 = 类名.属性名;