static关键字
static是一个修饰符,在Java语言中,static主要有4中使用情况:成员变量、成员方法、代码块和内部类。
(1)静态成员变量和静态成员方法
对于变量和方法,static作用差不多。
static方法是类的方法,不需要创建对象就可以被调用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用。
对于变量,对静态变量的引用有两种方式,分别是类.静态变量
和对象.静态变量
;实例变量属于对象,只有用对象.实例变量
的方式来引用。
(2)静态代码块
static关键字还有一个比较重要的作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来依次执行每个static块,并且只会执行一次。
(3)静态导入包
例如Math是一个数据包,静态导入后就可以直接使用包里的方法。
抽象类
abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。
抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。
接口
- 普通类:只有具体实现
- 抽象类:具体实现和规范(抽象方法)都有
- 接口:只有规范,自己无法写方法专业的约束
约束和实现分离:面向接口编程
接口就是规范,定义的是一组规则。接口的本质是契约,就像我们人间的法律一样,制定好后大家都遵守。声明接口用关键字interface
。
java类是单继承的,但是接口可以多继承。使用关键字implements
继承,使用快捷键alt+insert
快捷构建实现方法。
OO(面向对象)的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。