image.png

  1. package com.itheima.d7_abstract_test;
  2. public class Test {
  3. public static void main(String[] args) {
  4. // 目标:学习一下抽象类的基本使用:做父类,被继承,重写抽象方法
  5. GoldCard c = new GoldCard(); // 创建一个子类对象(可以调用父类的方法)
  6. c.setMoney(10000); // 这样就等于往自己卡里面存钱
  7. c.setUserName("dilei");
  8. c.pay(300);
  9. System.out.println("当前账户剩余:" + c.getMoney());
  10. }
  11. }

抽象方法:没有方法体,让子类自由发挥

  1. package com.itheima.d7_abstract_test;
  2. public abstract class Card {
  3. private String userName;
  4. private double money;
  5. /**
  6. * 定义一个支付方法:表示卡片可以支付
  7. * 抽象方法:没有方法体,让子类自由发挥
  8. */
  9. public abstract void pay(double money); // 定义一个抽象方法,约束子类一定要完成
  10. public String getUserName() {
  11. return userName;
  12. }
  13. public void setUserName(String userName) {
  14. this.userName = userName;
  15. }
  16. public double getMoney() {
  17. return money;
  18. }
  19. public void setMoney(double money) {
  20. this.money = money;
  21. }
  22. }

继承了抽象类方法,要重写该方法 快捷键Alt + Enter

  1. package com.itheima.d7_abstract_test;
  2. public class GoldCard extends Card {
  3. @Override // 继承了抽象类方法,要重写该方法 快捷键Alt + Enter
  4. public void pay(double money2) { // 形参
  5. System.out.println("您当前消费:" + money2);
  6. System.out.println("您卡片当前的余额是: " + getMoney());
  7. // 优惠价:
  8. double rs = money2 * 0.8; // 打8折
  9. System.out.println(getUserName() + ":您实际支付:" + rs);
  10. // 更新账户余额
  11. setMoney(getMoney() - rs);
  12. }
  13. }