• java抽象类(强制子类重写全部)


    一、

    1.将公共方法放到父类里面,在父类里面不能确定的方法体,就定义为抽象类

    2.强制继承的子类必须重写全部方法

    3.可以有构造方法,目的就是为了给属性进行初始化

    4.抽象类不一定是抽象方法,抽象方法一定是抽象类

    5.抽象类不能被实例化,只能被子类继承

    6.最简单识别方法就是abstract修饰的就是抽象

    7.抽象类存在的意义就是起到约束的作用和高效开发的作用

    二、

    1.抽象方法格式:

    public abstract 返回值类型 方法名();

    2.抽象类格式:

    public abstract class 类名{}

    三、例子

    1.简单例子

    抽象父类

    1. package bao;
    2. //父类
    3. public abstract class Father {//抽象类
    4. public abstract void eat();//抽象方法
    5. }

    子类

    1. package bao;
    2. //子类
    3. public class Son extends Father{//继承抽象父类
    4. @Override
    5. public void eat() {//重写了父类的所有方法
    6. System.out.println("儿子在吃东西了");
    7. }
    8. }

    测试类

    1. package bao;
    2. //测试类
    3. public class Test {
    4. public static void main(String[] args) {
    5. Son son = new Son();//实例化子类
    6. son.eat();//输出子类方法
    7. }
    8. }

    运行结果

    儿子在吃东西了

    2.进阶例子: 

    创建一个父类卡,用金卡子类可以打折0.8折,输入金额然后计算消费剩余的金额

    父类卡

    1. package bao;
    2. //父类
    3. public abstract class Card {
    4. //1.创建成员方法
    5. private double money;
    6. //3.创建一个子类必须要执行的支付方法
    7. public abstract void pay(double money2);//抽象方法不定义方法体,为了给不同子类实现不同的具体方法
    8. //2.生成了成员属性的set和get构造方法
    9. public double getMoney() {
    10. return money;
    11. }
    12. public void setMoney(double money) {
    13. this.money = money;
    14. }
    15. }

    子类金卡

    1. package bao;
    2. //金卡子类
    3. public class GoldCard extends Card{
    4. @Override
    5. public void pay(double money2) {//强制重写父类方法,快捷键:alt+回车键,选择第一个
    6. System.out.println("您当前消费的是"+money2);//父类方法
    7. System.out.println("您的总金额是"+getMoney());//不能直接调父类成员变量,要用get调用
    8. //优惠价计算
    9. double rs = money2 * 0.8;
    10. System.out.println("您实际支付"+rs);
    11. //更新账户余额,余额=原有金额-实际消费
    12. setMoney(getMoney()-rs);
    13. }
    14. }

    测试类

    1. package bao;
    2. //测试类
    3. public class Test {
    4. public static void main(String[] args) {
    5. GoldCard goldCard = new GoldCard();//实例化子类金卡
    6. goldCard.setMoney(3000);//给卡里面充钱
    7. goldCard.pay(500);//消费了500块钱
    8. System.out.println(goldCard.getMoney());//输出剩余金额
    9. }
    10. }

     运行结果

    您当前消费的是500.0
    您的总金额是3000.0
    您实际支付400.0
    2600.0

     总结:抽象类就是给子类继承,并且强制继承父类的所有方法

  • 相关阅读:
    商城风格也可以很多变,DIY 了解一下
    【用户画像】数据层mybatis、mabatis-plus介绍和使用,多数据源配置、生成分群基本信息(源码实现)
    ​​​​奇迹mu开服务端架设服务器
    【ceph】ceph集群中使用多路径(Multipath)方法
    不要忽视算法最朴素的意义
    工厂自动化中DCS软件
    解决Promise的多并发问题
    1.4-19:简单计算器
    odoo关于计算字段store=True时导致的安装/更新时间较长问题的解决方案
    android端MifareClassicTool
  • 原文地址:https://blog.csdn.net/m0_52861000/article/details/126340448