1. abstract
-
修饰的方法叫抽象方法,修饰的类叫抽象类
-
只有抽象类才能定义抽象方法
-
抽象类的非抽象子类必须重写父类的抽象方法
-
抽象类可以有属性和非抽象方法
-
一个类只能继承(extends)一个抽象类
私有属性和方法也是能继承到的,但是要通过其他方法来访问,不能直接调用
2. interface
- 一种特殊的类,比抽象类更抽象,叫做接口
- 接口的所有方法默认是public abstract的
- 接口的所有属性默认是public static final的
- 接口可以定义由default修饰的方法
- 一个类可以实现(implements)多个接口
- 接口中允许使用default和static来修饰方法,但不能同时修饰一个方法:使用default修饰,则实现类具有该方法;使用static修饰,则实现类不具有该方法,而是用接口.方法() 来调用
3. static
3.1 相关介绍
-
static可以修饰属性、方法、代码块和内部类
-
static修饰的属性叫静态属性。所有实例对象访问该属性时,访问到的都是同一个,例子如下
public class Person { public static int number = 18; public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); System.out.println(p1.number); // 输出18 System.out.println(p2.number); // 输出18 // 实际上一般用Person.number来访问 } } -
静态属性的加载早于对象的创建,是随着类的加载而加载的,只会加载一次,保存在方法区的静态域中
-
static修饰的方法叫静态方法。在静态方法中,无法使用this和super关键字,也无法访问非静态属性
-
静态方法常用于工具类的编写
3.2 经典例题
public class Father {
static {
System.out.println("父类静态代码块");
}
public Father() {
System.out.println("父类构造器");
}
}
public class Son extends Father {
static {
System.out.println("子类静态代码块");
}
public Son() {
System.out.println("子类构造器");
}
}
public class Test {
public static void main(String[] args) {
Son son = new Son(); // 创建子类时会默认调用父类的无参构造
}
}
输出结果是:
父类静态代码块
子类静态代码块
父类构造器
子类构造器
完整的顺序是:父静态代码块、子静态代码块、父非静态代码块、父构造函数、子非静态代码块、子构造函数
注:静态代码块只会加载一次!
4. final
- 该关键字理解为"最终"的意思
- final可以修饰类、方法、属性、局部变量
- final修饰的类不能被继承,比如String、System、StringBuffer
- final修饰的方法不能被重写
- final修饰的属性,可以赋值的位置有:显式地初始化、代码块中、构造器中。赋值后不能被修改
5. this
- 该关键字理解为当前对象的
- 可以调用属性、方法、构造器
- 在类的方法中,使用"this.属性"和"this.方法"来调用当前对象的属性和方法,但一般省略this关键字。在一些特殊情况下,形参名和属性名相同时,要用this来区分,比如set方法
- 使用this(形参列表...) 可以调用其他指定构造器
- 在构造器中调用其他构造器,this()只能放在第一行
6. super
- 该关键字理解为父类的
- super可以调用属性、方法、构造器
- 在子类的方法中,可以用过"super.属性"和"super.方法"显式调用父类的属性和方法
- 可以在子类构造器中,可以显式使用super(形参列表...) 调用父类的指定构造器,也要放在第一行。如果不写也会默认调用super()
- new一个子类只是创建了一个对象,虽然创建子类时会调用父类的构造器,但始终只创建过一个对象
7. 访问权限
| public | protected | 缺省 | private | |
|---|---|---|---|---|
| 当前类 | √ | √ | √ | √ |
| 同一个包 | √ | √ | √ | |
| 不同包的子类 | √ | √ | ||
| 同一个工程 | √ |
(注:修饰类时只能是public或缺省)