Java 抽象类

Java中抽象类的应用场景

  1、在某些情况下,某个父类只是知道其子类应该包含怎样的方法,

    但是无法准确知道这些子类如何实现这些方法(父类不关心子类如何实现这些方法)。

  2、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,

    从而避免了子类设计的随意性。

抽象类的作用

  限制子类必须实现某些方法,但不关注实现细节。

抽象类使用规则

  1、abstract 关键字来定义抽象类

  2、abstract 关键字来定义抽象方法,只声明,不实现

  3、包含抽象方法的类是抽象类

  4、抽象类中可以包含普通的方法,也可以没有抽象方法

  5、抽象类不能直接实例化,可以定义引用变量

示例代码

  定义抽象类

public abstract class TelPhone {
    
    // 抽象方法,必须在子类中实现
    public abstract void call();    
    public abstract void message(); 
    
    // 普通方法,可以不用在子类中实现
    public void www() {
        System.out.println("电话可以上网");
    }
}

  定义子类1

public class CellPhone extends TelPhone{
    @Override
    public void call() {
        System.out.println("通过键盘来打电话");
    }

    @Override
    public void message() {
        System.out.println("通过键盘来发短信");
    }

    @Override
    public void www() {
        super.www();
    }
}

  定义子类2

public class SmartPhone extends TelPhone {
    @Override
    public void call() {
        System.out.println("通过语音来打电话");
    }

    @Override
    public void message() {
        System.out.println("通过语音来发短信");
    }
}

  定义测试接口

public class Initial {
    public static void main(String[] args) {
        TelPhone tel1 = new CellPhone();
        tel1.call();
        tel1.message();
        tel1.www();

        TelPhone tel2 = new SmartPhone();
        tel2.call();
        tel2.message();
    }
}