Java抽象类(abstract)的定义和设计模式(模板设计模式)

1.抽象类

package com.itstudy.bean;

//抽象类

/**
 * 抽象类:描述的内容不是具体的内容
 * 1.有abstract修改,并且有抽象方法
 * 2.一共类中有抽象方法,那么这个类一定是抽象类
 * 3.抽象类中不一定有抽象方法,也可以有:成员变量,构造方法,一般成员方法就是带方法体,构造代码块,静态代码块
 * 4.继承抽象类的类如果不是抽象类,那么必须重写抽象类中的抽象方法,不然会报错
 * 5.抽象类不是顶层父类,顶层父类是OBJECT类,但一定要有子类继承它,并重写抽象方法,否则毫无意义
 * 6.抽象类中有构造方法,但不能创建对象,那么构造方法存在的意义是啥,是共子类调用的
 */
public abstract class People {

    //成员变量
    int a = 10;
    //构造方法
    public People(){
        System.out.println("a = " + a);
    }

    //抽象方法
    public abstract void sleep();

    //成员方法
    public void run(){
        System.out.println("人都要运动....");
    }
}

继承抽象类

public class Student extends People {
    //必须重写父类抽象方法
    @Override
    public void sleep() {
        System.out.println("学生在宿舍睡觉...");

    }
    //特有方法
    public void leaning(){
        System.out.println("学生在教室学习...");
    }
}

继承抽象类

public class Teacher extends People {
    //必须重写父类共有方法
    @Override
    public void sleep() {
        System.out.println("老师在家里睡觉...");

    }
    //特有方法
    public void speak(){
        System.out.println("老师在教室讲课...");
    }
}

测试类

package com.itstudy.test;

import com.itstudy.bean.Student;
import com.itstudy.bean.Teacher;

public class test01 {
    public static void main(String[] args) {
        Student student = new Student();
        Teacher teacher = new Teacher();
        //共有方法
        student.sleep();
        teacher.sleep();
        //特有方法
        student.leaning();
        teacher.speak();
    }
}

测试结果:

 2.抽象类的存在的意义

抽象类本身存在意义需要子类重写抽象方法,并且抽象类起到模板思。

java中的设计模式有23种。

常见的设计模式:代理设计模式、装饰者设计模式、工厂设计模式、单列设计模式、模板设计模式。

根据抽象类产生的模板设计模式:

相同的内容即共性内容在父类中实现,如果也是共性的,但是方法体实现的内容不一样,此时抽象类中定义抽象方法,共子类去实现,实现抽象方法完成自己特有的内容。

模板设计模式的案例

父类(模板)

package com.itstudy.bean;

public abstract  class Animal {
    //共性内容统一
    public void dining(){
        System.out.println("感到有饥饿感..");
        cook();
        System.out.println("开始吃饭..");

    }
    //方法体内容不同,则有子类实现抽象方法,完成不同的内容
    public abstract void cook();
}

不同的类继承抽象类实现特有的方法体内容

package com.itstudy.bean;

public class Wolf extends Animal {
    //做饭情况
    @Override
    public void cook() {
        System.out.println("狼出门猎杀小白兔...");

    }
}


public class Dog extends Animal {
    //做饭情况
    @Override
    public void cook() {
        System.out.println(" 狗等着主人给喂食...");

    }
}

测试类:

package com.itstudy.test;

import com.itstudy.bean.Dog;
import com.itstudy.bean.Wolf;

public class test02 {
    public static void main(String[] args) {
        Wolf w = new Wolf();
        w.dining();

        Dog dog = new Dog();
        dog.dining();
    }
}

结果:

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2 结构型模式 这些设计模式关注和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4 J2EE 模式 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 组合实体模式(Composite Entity Pattern) 数据访问对象模式(Data Access Object Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器模式(Intercepting Filter Pattern) 服务定位器模式(Service Locator Pattern) 传输对象模式(Transfer Object Pattern)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值