浅理解Java中的抽象类

抽象类和抽象方法

抽象类:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

抽象方法:就是加上abstract关键字,去掉大括号,直接分号结束。抽象方法所在的类必须是抽象类,在class之前写上abstract即可

特征:

  • 抽象方法没有方法体
  • 抽象方法必须存在于抽象类中
  • 子类重写抽象父类时,必须重写父类所有的抽象方法

如何使用抽象类和抽象方法:

  • 不能直接创建new抽象类对象
  • 必须用一个子类来继承抽象类对象
  • 子类必须覆盖重写抽象父类当中所有的抽象方法
  • 创建子类对象进行使用

注意事项

  • 抽象类不能创建对象,如果创建,编译无法通过而报错,只能创建其非抽象子类的对象

    假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有方法体,无意义

  • 抽象类中可以有构造方法,是供子类创建对象时,初始化父类成员使用

    子类的构造方法中,有默认的super(),需要访问父类构造方法

  • 抽象类中不一定有抽象方法,但是抽象方法所在的类一定是抽象类

  • 抽象类的子类必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错,除非该子类也是抽象类


抽象类简单示例:

abstract class Employee {
    private int ID;
    private String name;

    public Employee(int ID, String name){
        this.ID  = ID;
        this.name = name;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void showInformation();

}

class Teacher extends Employee{

    public Teacher(int ID, String name) {
        super(ID, name);
    }

    @Override
    public void showInformation() {
        System.out.println("ID is: " + getID() + "name is: " + getName());
    }
}

public class AbstractTest {
    public static void main(String[] args) {
        Teacher t = new Teacher(100, "Forlogen");
        t.showInformation();  // ID is: 100name is: Forlogen
    }
}

发布了461 篇原创文章 · 获赞 122 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/Forlogen/article/details/105645270
今日推荐