标签:场景 end 打电话 abs call() 实例 rgs override 声明
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(); } }
标签:场景 end 打电话 abs call() 实例 rgs override 声明
原文地址:https://www.cnblogs.com/vincenshen/p/10053669.html