1 定义
Java的抽象包括 抽象方法
和 抽象类
,二者在定义的时候需要加上abstract
前缀。
抽象方法
:只定义了方法名,未对方法本身进行定义。抽象方法
只能在抽象类
中定义,定义的规则是,加上abstract
关键字,然后去掉大括号,直接以分号结束。抽象类
:抽象方法
所在的类,其不能直接构造对象。定义的规则是,在class
前加上abstract
即可。
2 抽象类和抽象方法的使用
抽象类
不能直接对象(即使不包含抽象方法
也不能),其必须通过子类进行继承。- 子类继承
抽象类
父类,必须把父类中所有的抽象方法
覆盖重写,并且去掉abstract
。 - 创建子类对象进行使用。
3 一个例子
package AllDemos.Demo1;
// 定义一个抽象类Animal,其中eat()为抽象方法。
public abstract class Animal {
public abstract void eat();
}
package AllDemos.Demo1;
// 构造Cat子类对抽象类Animal进行继承,并且重写了eat()方法。
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package AllDemos.Demo1;
public class DemoMain {
public static void main(String[] args) {
// Animal animal = new Animal(); // 错误写法,不能直接创建抽象类对象
Cat cat = new Cat(); //子类将抽象类的抽象方法覆盖重写之后才能创建子类对象
cat.eat();
}
}
4 注意事项
抽象类
中,可以有构造方法,是提供给子类创建对象时,初始化父类使用的。即子类的构造方法中,有默认的super()
,优先访问父类的构造方法。抽象类
中,不一定包含抽象方法
,但抽象方法
一定在抽象类
中。抽象类
的子类必须重写抽象父类所有的抽象方法
,否则无法编译通过,除非该子类也是抽象类
。