抽象类abstract

  1. 抽象类与抽象方法必须用abstract修饰(与final互斥),抽象方法不可有方法体
  2. 抽象类不可被实例化,不能用于创建对象
  3. 抽象类包括成员变量、方法(普通方法和抽象方法)、构造器、初始化块、内部类,主要用于派生子类
  4. 抽象类的子类要么重写父类的全部抽象方法,要么只能定义为抽象类
1
2
3
4
5
6
7
8
9
public class abstractTest {
public static void main(String[] args){
// 用抽象类创建对象时,只能用其子类向上转型
铠甲勇士2 炎龙技能类型 = new 炎龙铠甲2();
铠甲勇士2 风鹰技能类型 = new 风影铠甲2();
炎龙技能类型.铠甲技能2();
风鹰技能类型.铠甲技能2();
}
}
  1. abstract抽象类最主要的功能:派生子类,abstract与final互斥
  2. 相对于普通类,abstract类多了abstract方法,抽象类不可实例化,即不能被分配内存、不能创建对象
  3. static修饰的方法属于类本身,必须被分配内存,static和abstract不可同时修饰一个方法
1
2
3
4
5
6
7
8
9
10
abstract class 铠甲勇士2{
// 抽象方法
public abstract void 铠甲技能2();
// public abstract static void main(){
// System.out.println("测试");
// }
public void 非抽象(){
// 非抽象方法,不必须重写
}
}

抽象类的子类,要么重写父类的全部抽象方法,要么也是抽象类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class 炎龙铠甲2 extends 铠甲勇士2 {
@Override
public void 铠甲技能2() {
System.out.println("封魔斩");
}
}

class 风影铠甲2 extends 铠甲勇士2 {
@Override
public void 铠甲技能2() {
System.out.println("穿风刺");
}
}

abstract class 帝皇铠甲 extends 铠甲勇士2{
// 抽象类
}