一、static关键字
1、static可以修饰属性、方法、类(只能修饰内部类)
(1)修饰静态属性、静态初始化、静态方法、单子模式。修饰的属性会被放到方法区,只会被加载一次。
(2)static修饰的属性或者方法被所有的实例共享,如访问权限控制允许。可以不必创建该类的实例对象,可以通过类名.属性名或者方法名调用。
(3)static修饰的成员叫做类成员或者静态成员。
(4)当一个类对象作为一个类中的成员变量的时候,才可以用static去修饰
(5)static修饰的方法在方法体中不能使用this和super关键字。
(6)静态方法要访问非静态成员时,必须先将其实例化。
2、静态方法:静态成员变量的设计思想
(1)静态成员变量:不因为对象的不同而改变属性的值。
(2)静态方法:方法和调用者无关,静态方法不参与继承(实质上是继承后隐藏了),所以static修饰的方法没有覆写。
3、被所有类对象共享那个的属性(方法)与调用者无关的时候,需要用static关键字去修饰成员变量或者方法。
二、静态初始化
1、在一个类中可以使用不包含在任何方法体中的静态代码块(static block),当类被载入时,静态代码块被执行,且只会被执行一次,静态代码块通常是用来给属性初始化的。
static{
java 代码···
}
这是给程序员提供的一种时机,我们要在类加载时做某些事情的时候,我们用静态代码块
如:连接池,xml解析···
2、是在构造方法执行之前调用的,如果你想在构造方法执行前需要做某件事情,可以使用构造代码块
{
}
三、单子模式(单例模式)
1、属于Java中的设计模式:
(1)在整个软件系统中,对某个类只能存在一个实例对象,该类只提供一个取得对象实例的方法,但是在本类中依然可以创建这个对象。我们可以用private对构造方法进行私有化。
(2)构造方法私有化之后不能在外部创建这个类的对象。
2、如数据库连接池。
四、理解main方法
修饰符:public/static 其中有一个String类型的数组作为参数
五、final关键字
1、fianl关键字可以修饰类、属性、方法。
(1)修饰属性:final修饰的属性必须可视化赋值;修饰的属性是一个常量(不可变的值),可以被继承;修饰属性的只能被赋值一次;不能通过创建类对象后使用引用名.属性名的方式赋值、不能通过set和get方法赋值,只能够通过构造方法赋值,声明变量的同时在构造方法中赋值。
(2)修饰类:final修饰的类不能被继承。final修饰类提高了安全性,还提高了程序的可读性。
(3)修饰方法:final修饰方法可以调用静态方法;final修饰的方法参与继承,可以被重载,但不能被子类复写(提高了安全性)。
2、因为final修饰的属性是一个只会加载一次的常量,所以我们经常会和static一起使用(相当于一个全局常量)。
六、抽象类
1、随着继承层次中子类的定义,子类变得越来越具体,父类更简单、更通用。如果一个父类非常抽象,抽象到没有实例,我们就叫这个类为抽象类。即用abstract修饰的类我们叫它抽象类(只做继承,没有实例)。
2、抽象类是用来模型化那些父类无法确定的全部实现,而是由其子类提供具体实现对象的类。
3、用abstract修饰的方法我们称为抽象方法,抽象方法只能声明,没有实现,并且是以分号结尾的(可以有参数,无方法体{})。
public abstract void testAbstract(String);
4、有抽象方法的类必须是抽象类,抽象类中可以没有抽象方法。
5、抽象类的子类必须用复写(@Override)实现父类中的所有抽象方法,必须提供方法体。
6、不能用abstract修饰私有方法、静态方法、构造方法。
7、抽象类中可以有构造方法
8、static不能修饰抽象方法