• javaSE笔记-抽象类


      抽象类存在的意义是为了被子类继承,否则抽象类将毫无意义,抽象类体现的是模板思想,模板是通用的东西。

    抽象类:包含抽象方法的类。

    abstract class 类名字 {

    }

    抽象方法:没有方法体的方法

    修饰符 abstract 返回值类型 方法名 (参数列表);

    抽象类的使用

    继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。

    此时的方法重写,是子类对父类抽象方法的完成实现,我们将这种方法重写的操作,也叫做实现方法。

    抽象类的特征

    有得:抽象类得到了拥有抽象方法的能力

    有失:抽象类失去了创建对象的能力

    抽象类的注意事项

    • 抽象类不能创建对象。
    • 抽象类中,可以有构造器,是供子类创建对象时,初始化父类成员使用的。
    • 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
    • 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则子类也必须定义成抽象类。
    • 抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。

    模板设计模式:司机开车

    1. 定义开车类的模版:在父类中调用子类重写后的方法
    2. 定义一些固定的内容(开门,点火,刹车,熄火)
    3. 不用的内容定义抽象方法(开车姿势不同)

    Driver.java

     1 public abstract class Driver {
     2     //定义开车的方法
     3     public void drive(){
     4         System.out.println("开门");
     5         System.out.println("点火");
     6         ziShi();//调用的是每个子类重写后的方法
     7         System.out.println("刹车");
     8         System.out.println("熄火");
     9     }
    10 
    11     //新司机和老司机开车的方式不同,定义为抽象方法
    12     public abstract void ziShi();
    13 }

    NewDriver.java

    //定义新司机类,是司机的一种,继承司机类
    public class NewDriver extends Driver {
        @Override
        public void ziShi() {
            System.out.println("新司机开车姿势:双手紧握方向盘!");
        }
    }

    OlederDriver.java

    //定义老司机类,是司机的一种,继承司机类
    public class OldDriver extends  Driver{
        @Override
        public void ziShi() {
            System.out.println("老司机开车姿势:右手握方向盘左手抽烟!");
        }
    }

    测试类Demo01Driver.java

    public class Demo01Driver {
        public static void main(String[] args) {
            //创建新司机对象
            NewDriver nd = new NewDriver();
            nd.drive();
    
            System.out.println("-----------------");
    
            //创建老司机对象
            OldDriver od = new OldDriver();
            od.drive();
        }
    }

    运行结果

  • 相关阅读:
    MySQL Explain学习笔记
    postman测试文件上传接口教程
    URLDecoder异常Illegal hex characters in escape (%)
    第三章 jQuery总结 参考文本
    史上最简单的一道面试题!坑人吧
    cookie和session的关联关系
    服务器配置
    Rancher 添加主机无法显示、添加主机无效的解决办法
    .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用
    .Net Core 跨平台应用使用串口、串口通信 ,可能出现的问题、更简洁的实现方法
  • 原文地址:https://www.cnblogs.com/love-xiaowu/p/12687140.html
Copyright © 2020-2023  润新知