抽象类 模板设计模式

抽象类 包含抽象方法的类 abstract 修饰
1、抽像类不可以被实例化 Person p = new Person(“bit”,10);
2、如果一个非抽象类继承了抽象类,必须要重写抽象类的抽像方法
3、如果是抽象类继承了抽象类,那么作为派生类的抽象类可以不实现基类的方法
4、Private abstract 不能同时出现 final :方法不能用 类也不能用
5、Public>protected>包访问权限>private
重写方法的时候:
派生类的访问权限一定要大于等于积累的访问权限
6、抽象类里面可以包含非抽象方法。

abstract class Person{
private String name ; 属性
public String getName(){ // 普通⽅方法
return this.name;
}
public void setName(String name){
this.name = name ;
}
// {}为方法体,所有抽象⽅法上不包含方法体
public abstract void getPersonInfo() ; //抽象方法
}
class Student extends Person{
public void getPersonInfo(){
System.out.println("I am a student");
}
}
public class Test{
public static void main(String[] args) {
Person per = new Student() ; //实例化子类,向上转型
per.getPersonInfo() ; //被子类所覆写的方法
}
}

//类加载机制 双亲委派机制
//钩子方法 hook方法
Public boolean isAddOtherThings(){

}
模板模式
完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;
就可以子啊父类中定义一个完成该事情的总方法。每个步骤的具体实现,由子类完成。
abstract class 类名{
public final void{
}
Public abstract void fun(){
}
Final void make Drink();
//钩子方法 hook方法
模板设计模式
在这里插入图片描述

abstract class BankTemplate{
    public final void takeNumber(){
        System.out.println("1、取号");
    }
    public abstract void transact();
    public final void evaluate(){
        System.out.println("3、业务评价");
    }
    final void process(){
        takeNumber();
        transact();
        if(isEvaluate()){
            evaluate();
        }
    }
    public boolean isEvaluate(){
        return true;
    }
}
class User1 extends BankTemplate{

    @Override
    public void transact() {
        System.out.println("2、我要取一个亿");
    }

    @Override
    public boolean isEvaluate() {
        return false;
    }
}
class User2 extends BankTemplate{

    @Override
    public void transact() {
        System.out.println("2、我要存十个亿");
    }
}
public class TestDemo2 {
    public static void main(String[] args) {
        BankTemplate bankTemplate=new User1();
        bankTemplate.process();
        BankTemplate bankTemplate2=new User2();
        bankTemplate2.process();

    }


}

在这里插入图片描述

import java.util.Scanner;

abstract class OnlineShopping {

    public final void browseGoods() {
        System.out.println("1、浏览商品");
    }

    public final void selectGoods() {
        System.out.println("2、选择商品");
    }

    public abstract void callService();

    public final void computerPrice() {
        System.out.println("4、结算");
    }

    public abstract void orderPay();

    public abstract void sendService();

    public final void showOrder() {
        System.out.println("7、查看订单");
    }

    final void process() {
        browseGoods();
        selectGoods();
       if (isCallService()) {
           callService();
      }
        computerPrice();
        orderPay();
        sendService();
        showOrder();
    }
    public boolean isCallService() {
        return  true;
    }

}
class Jd extends OnlineShopping {


        @Override
        public void callService() {
            System.out.println("3、您好,京东客服为您服务");
        }
        public String getAnswer(){
        System.out.println("请问您需要客服服务吗?要:y 不要:n");
            Scanner scanner=new Scanner(System.in);
            String str=scanner.nextLine();
            return str;
        }
        public boolean isCallService() {
            String str = getAnswer();
            if (str.equals("y")) {
                return true;
            } else
                return false;

        }
        @Override
        public void orderPay() {
            System.out.println("5、微信支付");
        }

        @Override
        public void sendService() {
            System.out.println("6、京东配送");
        }

}
public class TestDemo1{
    public static void main(String[] args) {
        OnlineShopping onlineShopping=new Jd();
         onlineShopping.process();
//        Jd jd=new Jd();
//        jd.process();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值