1,父类(Card)

  1. package Card02;
  2. /**
  3. * @author Jztice5
  4. * @date 2022年01月24日 9:51
  5. */
  6. public abstract class Card {
  7. public String name;
  8. public double balance;
  9. public abstract double setPayment(double money);
  10. //模板方法:(巧用传参)
  11. public void ShowPay(double money){
  12. System.out.println("登录成功");
  13. double m1=setPayment(money);
  14. System.out.println("消费额:"+m1);
  15. }
  16. //标准类格式:
  17. public Card() {
  18. }
  19. public Card(String name, double balance) {
  20. this.name = name;
  21. this.balance = balance;
  22. }
  23. }

2,子类1(GCard)

  1. package Card02;
  2. /**
  3. * @author Jztice5
  4. * @date 2022年01月24日 9:51
  5. */
  6. public class GCard extends Card{
  7. @Override
  8. public double setPayment(double money) {
  9. return money * 0.8;
  10. }
  11. //标准类格式
  12. public GCard() {
  13. }
  14. public GCard(String name, double balance) {
  15. super(name, balance);
  16. }
  17. }

3,子类2(SCard)

  1. package Card02;
  2. /**
  3. * @author Jztice5
  4. * @date 2022年01月24日 9:51
  5. */
  6. public class SCard extends Card{
  7. @Override
  8. public double setPayment(double money) {
  9. return money * 0.85;
  10. }
  11. //标准类格式
  12. public SCard() {
  13. }
  14. public SCard(String name, double balance) {
  15. super(name, balance);
  16. }
  17. }

4,测试类(Text)

  1. package Card02;
  2. /**
  3. * @author Jztice5
  4. * @date 2022年01月24日 9:51
  5. */
  6. public class Text {
  7. public static void main(String[] args) {
  8. GCard gc = new GCard();
  9. //调用父类模板方法
  10. gc.ShowPay(300);
  11. SCard sc = new SCard();
  12. //调用父类模板方法
  13. sc.ShowPay(300);
  14. }
  15. }