4 抽象类
4.1抽象类特点:
A:抽象类和抽象方法必须用abstract关键字修饰
B:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
C:抽象类不能实例化
那么,如果实例化并使用呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
D:抽象类的子类
要么是抽象类
要么重写抽象类中的所有抽象方法
4.2抽象类的作用:
强制要求子类必须要重写某些方法。
4.3抽象类的成员:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法
不能实例化,用于子类访问父类数据的初始化。
成员方法:既可以是抽象的,也可以是非抽象的。
package com.edu_10;
abstract class Animal{
//抽象类中不一定有抽象方法
public void sleep(){
System.out.println("动物都喜欢睡大觉");
}
public abstract void eat();
}
class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗喜欢吃肉");
}
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫喜欢吃鱼");
}
}
//定义一个抽象类继承Animal这个类,如果一个抽象类继承另一个抽象类,不需要重写父类中的抽象方法
//abstract class Person extends Animal{}
public class AbstractDemo {
public static void main(String[] args) {
Dog d = new Dog();
d.eat();
System.out.println("----------");
Animal a = new Dog();
a.eat();
}
}