码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JavaEE进阶序列 | 从小白到工程师】JavaEE中的抽象类和抽象方法


    文章目录

    • 💨更多相关知识👇
      • 一、抽象类概述
      • 二、抽象类格式
      • 三、抽象方法概述
      • 四、 抽象方法格式
      • 五、抽象类的特点
      • 六、抽象类的成员特点
      • 七、抽象类和普通类的区别
      • 八、案例
        • ⭐代码演示
    • 作者:KJ.JK


    🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
     
    🍂个人博客首页: KJ.JK
     
    欢迎大家点赞👍收藏💖评论💬关注🔒
     
    💖源码获取 | 💻学习交流 | 🤝商务合作 | 💨私信作者


    💨更多相关知识👇

    💖JavaEE中的面向对象特征之封装

    💖ArrayList集合中的常用成员方法

    💖Java中String的split切割字符串方法详解

    💖String中的replace的四个方法

    💖JavaEE中的Stream流的常用方法

    💖JavaEE中的Stream流知识点使用,精华总结,一文直接上手

    💖JavaWeb中的过滤器(Filter)和监听器(Listener)区别

    💖JavaEE中史上最全String类入门介绍文章,学习StringAPI这一篇即可


    一、抽象类概述

                     类中如果有抽象方法,该类必须定义为抽象类
    
    • 1

    二、抽象类格式

                    格式: 权限修饰符 abstract class 类名{};
                    
                    范例: public abstract class Animal {
                                 代码体
                                 };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、抽象方法概述

                 父类需要定义某个方法,但是不知道如何去实现这个方法,
                 具体的功能应该让子类去实现这样的方法就可以定义为抽象方法
    
    • 1
    • 2

    四、 抽象方法格式

                  格式:  权限修饰符 abstract 返回值类型 方法名(参数列表);      
                  
                  范例:  public abstract   void run();
    
    // 不能写私有private抽象方法,因为不能被子类进行重写
    
             抽象方法: 默认都是 public abstract 修饰的,可以省略不写     // void connect();
                                          
                        //public void aMethod();    省略abstract
                        
                        //void aMethod();           省略 public abstract
                      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    🔥系列热门专栏🔥:
     
    ⚡《JavaEE进阶序列 | 从小白到工程师》系列文章⚡
     
    ⚡《JavaEE项目实战》系列文章⚡
     
    ⚡《JavaSwing项目合集》系列文章⚡
     
    ⚡《数据分析中的pandas》系列文章⚡


    五、抽象类的特点

          * 抽象类无法创建对象
          
          * 有抽象方法,这个类一定是抽象类   (抽象类和抽象方法的关系)
      
          * 抽象类中不一定有抽象方法
          
          * 子类继承抽象类
    
                 * 要么重写所有抽象方法
    
                 * 要么子类也必须定义为抽象类     //如:public abstract class Dog extends Animal
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    请添加图片描述


    六、抽象类的成员特点

       ●成员变量
                        可以是变量
    
                        也可以是常量
       ●构造方法
    
                      有构造方法,但是不能实例化(通过多态来进行实例化)
    
                      那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化
    
       ●成员方法
    
                      可以有抽象方法:限定子类必须完成某些动作(限定子类为抽象类或者子类要进行重写)
    
                      也可以有非抽象方法:提高代码复用性(是用继承来保证的)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    七、抽象类和普通类的区别

    
       * 抽象类:拥有所有能力,还有定义抽象方法的能力,"不能创建对象"
              
    
       * 普通类:"不能定义抽象方法"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    八、案例

    请添加图片描述


    ⭐代码演示

    public abstract class Card {
    
        private  String id;
        private  double balance;
    
        public Card() {
        }
    
        public Card(String id, double balance) {
            this.id = id;
            this.balance = balance;
        }
    
        public abstract void pay(double money) ;
    
    
    
    
        public String getId() {
            return id;
        }
    
    
        public void setId(String id) {
            this.id = id;
        }
    
    
        public double getBalance() {
            return balance;
        }
    
    
        public void setBalance(double balance) {
            this.balance = balance;
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    public class GoldenCard extends  Card{
    
        public GoldenCard() {
        }
    
        public GoldenCard(String id, double balance) {
            super(id, balance);
        }
    
    
    
        @Override
        public void pay(double money) {
            System.out.println("支付成功");
            System.out.println("原件:"+money);
    
            //打折价
            double paymoney=money*0.8;
            System.out.println("优惠价:"+paymoney);
    
            //余额
            double newBalance=getBalance()-paymoney;
            System.out.println("余额:"+newBalance);
    
            //更新余额为最新的金钱
            setBalance(newBalance);
    
        }
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    //测试类
    public class Test {
        public static void main(String[] args) {
    
    
            GoldenCard ca=new GoldenCard("vip0001",10000);
    
    
            Scanner rd=new Scanner(System.in);
            System.out.println("请输入加油的金额:");
            double a=rd.nextDouble();
            ca.pay(a);
    
    
            System.out.println("请输入加油的金额:");
            a=rd.nextDouble();
            ca.pay(a);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    请添加图片描述


    作者:KJ.JK

    文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

  • 相关阅读:
    ES6新增循环对象的四种方法(通俗易懂)
    ssm基于JavaEE的电脑销售管理系统设计与实现毕业设计源码021143
    知识点5--CMS项目个人中心
    git命令合并某一个分支的某个commit到目标分支
    VRRP 虚拟路由器冗余协议的解析和配置
    Rust之自动化测试(二):控制测试如何运行
    AJAX——Promise-链式调用
    《Java 进阶之路》 下--推荐书籍
    4、Buffer
    Mybatis中limit用法补充
  • 原文地址:https://blog.csdn.net/m0_47384542/article/details/125837982
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号