0047 抽象类、模板设计模式
/*抽象类1.用abstract关键字来修饰一个类时,这个类就叫抽象类访问修饰符 abstract 类名{}2.用abstract关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符 abstract 返回类型 方法名(参数列表); //注意:抽象方法没有方法体,即不能实现细节1.抽象类不能被实例化2.抽象类不一定要包含abstract方法,即抽象类可以没有abstract方法3.一旦类包含了abstract方法,则这个类必须声明是抽象类abstract4.abstract只能修饰类和方法,不能修饰属性和其他的东西5.抽象类可以有任意的成员,如:非抽象方法、构造器、属性等6.如果一个类继承了抽象类,则必须实现抽象类的所有抽象方法,或者子类也声明为abstract抽象类7.抽象方法不能使用private、final和static修饰,因为这些关键字都是和重写相违背的*//*练1:下列代码是否能通过编译abstract final class A{}; //final不能被继承abstract public static void test(); //static与方法重写无关abstract private void test(); //私有的方法不能被重写*//*练2:编写一个Employee类,声明为抽象类,包含name、id、salary三个属性,提供必要的构造器和抽象方法CommonEmployee类继承了Employee类Manager类继承了Employee类,还有特有属性:bonus奖金设计CommonEmployee类和Manager类,要求类中提供必要的方法进行属性访问,实现work()*/ public class Abstract {public static void main(String[] args) {Manager manager = new Manager("jack", 001, 20000);manager.setBonus(9999);manager.work();CommonEmployee commonEmployee = new CommonEmployee("tom", 999, 10000);commonEmployee.work();} } abstract class Employee{private String name;private int id;private double salary;public Employee(String name, int id, double salary) {this.name = name;this.id = id;this.salary = salary;}//将work做成抽象方法public abstract void work();public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;} }class Manager extends Employee{private double bonus;public Manager(String name, int id, double salary) {super(name, id, salary);}public double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}@Overridepublic void work() {System.out.println("经理" + getName() + "正在工作....");} }class CommonEmployee extends Employee{public CommonEmployee(String name, int id, double salary) {super(name, id, salary);}@Overridepublic void work() {System.out.println("普通员工" + getName() + "正在工作....");} }
/*抽象类实践——模板设计模式在模板模式中,一个抽象类公开定义了执行它的方法的方式(模板),子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行例:需求1.有多个类,完成不同的任务2.要求能够得到各自完成任务的时间*/ public class Template {public static void main(String[] args) {AA aa = new AA();aa.calculateTime();BB bb = new BB();bb.calculateTime();}}abstract class People{//抽象类-模板设计模式public abstract void job();//抽象方法public void calculateTime(){//开始时间long start = System.currentTimeMillis();//System类currentTimeMillis()返回当前时间,以毫秒为单位job();//动态绑定机制,从子类开始查找//结束时间long end = System.currentTimeMillis();System.out.println("任务执行时间为" + (end - start) + "毫秒");} }class AA extends People{@Overridepublic void job() {long num = 0;for (int i = 1; i <= 3000000; i++) {num *= i;}} }class BB extends People{@Overridepublic void job(){long num = 0;for (int i = 1; i <= 1000000; i++) {num += i;}} }
0047 抽象类、模板设计模式相关推荐
- 【复习回顾、继承、抽象类模板设计模式】
day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 th ...
- Java——抽象类+模板设计模式
目录 1.抽象类介绍 2.抽象类细节 3.抽象类细节02 4.抽象类实例(员工问题) test01.java Employee.java Manager.java CommonEmployee.jav ...
- 抽象类 模板设计模式
抽象类 包含抽象方法的类 abstract 修饰 1.抽像类不可以被实例化 Person p = new Person("bit",10); 2.如果一个非抽象类继承了抽象类,必须 ...
- Java笔记018-抽象类、抽象类最佳实践-模板设计模式、接口、内部类
目录 抽象类 先看一个问题 小结: 抽象类快速入门 抽象类的介绍 抽象类使用的注意事项和细节讨论 抽象类练习题 抽象类最佳实践-模板设计模式 基本介绍 模板设计模式能解决的问题 最佳实践 最佳实践 接 ...
- 01-复习回顾、继承、抽象类、模板设计模式
day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习 类的创建------>必须掌握 对象的创建和使用------>必须掌握 匿名对象 继承 如何继承-继承的格式--- ...
- 【复习回顾、继承、抽象类、模板设计模式】
day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 抽象 ...
- 10.7 抽象类最佳实践-模板设计模式
10.7.1 基本介绍 10.7.2 模板设计模式能解决的问题 10.7.3 最佳实践 abstract public class Template { //抽象类-模板设计模式 public abs ...
- Java 抽象类最佳实践-模板设计模式
目录 1.基本介绍 2.模板设计模式能解决的问题 3.最佳实践 1.基本介绍 抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展.改造,但子类总体上会保留抽 ...
- day01-【复习回顾、继承、抽象类、模板设计模式】
复习总结[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 抽象类 ...
最新文章
- 【LeetCode从零单排】No21.MergeTwoSortedLists
- 腾讯陈妍:万物互联时代,保险业应更注重服务创新来挖掘用户需求
- 取周一时间_周一到周五不好化妆?别着急,5款夏日通勤裸妆的教程来了!
- 分享我的Windows live writer 使用经验
- 金属拉链滑块行业调研报告 - 市场现状分析与发展前景预测
- Windows 进程管理
- The Dandy Lab使用RFID积分方案,提升客户保持率
- mc服务器常用指令_我的世界:游戏内高频使用指令,这个“神秘代码”你用过吗?...
- 【krpano】多分类缩略图及多分类地图案例
- Windows和Linux DNS Cache清理
- mac 修改pip镜像为国内镜像
- imx6ull ccm时钟体系
- links.php是病毒吗,发现了第一只php病毒PHP.Pirus
- 改进网易云音乐的“音乐社交”构想
- 联想笔记本驱动升级,指纹识别不了不成功解决方法
- Java获取国家节假日规定休息日期
- SpringBoot快速上手
- 谷歌PR风采依旧 推动网络推广产业链
- 搭建VLC流媒体服务
- Java判断某特殊字符串结尾的2种方法
热门文章
- 卫星导航模拟器GSS7000测试NTRIP RTK--以Ublox F9P 为例.rtklib原始观测量解算固定解FIX
- python小项目之淘宝秒杀
- Linux(ubuntu) 基础
- PID调节之比例(P)调节
- 剪辑歌曲,哪个音乐剪辑软件操作简单
- 计算机高新办公软件应用考试,全国计算机信息高新技术考试办公软件中级操作员考试题库...
- mess组网 中继_土豪用Mesh 我们就用无线中继解决问题
- Data Oriented Analysis Design
- 罗技 连点 脚本_首拆?罗技G PRO X机械键盘,拆解测评
- c语言p1口亮灯,单片机实验开发与微机原理接口技术综合实验装置,上海求育