1、类的第四个成员,初始化块(或代码块)
代码块只能用static修饰,代码块分为静态代码块和非静态代码块
非静态代码块
(1)可以对类的属性进行操作
(2)里面可以有输出语句
(3)一个类中可以有多个非静态的代码块,多个代码块是按照顺序进行的
(4)没创建一个类的对象,非静态的代码块就被加载一次
(5)非静态的代码块要早于构造器
静态代码块(被static修饰)
(1)里面可以有输出语句
(2)随着类的加载而加载,而且只能被加载一次
(3)多个静态代码块之间是按照顺序执行的,要早于非静态代码块
(4)静态代码块中,只能执行静态的结构(类属性,类方法)
2、四种访问权限修饰符
Java权限修饰符public、protected、缺省(default)、private置于类的成员定义前(五成员),用来限定对象对该类成员的访问权限。
修饰符 | 类内部 | 同一个包 | 子类 | 任何地方 |
---|---|---|---|---|
private | yes | |||
缺省 | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes | yes |
对于class的权限修饰只可以用public和default(缺省)
(1)public类可以在任意地方被访问
(2)缺省类只能被同一个包内部的类访问
3、面向对象的第四大特性:抽象性(abstract)
抽象方法所在的类一定是抽象类,但抽象类中可以没有抽象方法
abstract修饰类:(抽象类不能被实例化但可以被继承)
(1)abstract修饰类后,此类不能被实例化,即不能调用此类里的方法。
(2)抽象类有构造器(凡是类都有构造器)
abstract修饰方法:
(1)abstract修饰方法后,此方法就是一个抽象方法,抽象方法是没有"方法体"的。
(2)抽象方法自能保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写次抽象方法。
(3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以被实例化。
(4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍然有父类中的抽象方法,则此类必需声明为抽象的。
4、接口(interface)
(1)接口是与类并行的一个概念。
(2)接口可以看做是一个特殊的抽象类。是常量与抽象方法的集合。接口中不能包含变量和一般的方法。
(3)接口是没有构造器的。它不能被实例化
(4)接口定义的是一种功能可以被类所实现(implements)
比如:class AA extends BB implement CC,DD
(5)实现接口的类,必须要重写其中的所有抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍然为一个抽象类。
(6)类可以实现多个接口,但只能继承一个类。(类的单继承多实现性)
(7)接口与接口之间也是继承的关系,可以实现多继承
(8)接口与实现类中也存在多态性