/*抽象类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 抽象类、模板设计模式相关推荐

  1. 【复习回顾、继承、抽象类模板设计模式】

    day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 th ...

  2. Java——抽象类+模板设计模式

    目录 1.抽象类介绍 2.抽象类细节 3.抽象类细节02 4.抽象类实例(员工问题) test01.java Employee.java Manager.java CommonEmployee.jav ...

  3. 抽象类 模板设计模式

    抽象类 包含抽象方法的类 abstract 修饰 1.抽像类不可以被实例化 Person p = new Person("bit",10); 2.如果一个非抽象类继承了抽象类,必须 ...

  4. Java笔记018-抽象类、抽象类最佳实践-模板设计模式、接口、内部类

    目录 抽象类 先看一个问题 小结: 抽象类快速入门 抽象类的介绍 抽象类使用的注意事项和细节讨论 抽象类练习题 抽象类最佳实践-模板设计模式 基本介绍 模板设计模式能解决的问题 最佳实践 最佳实践 接 ...

  5. 01-复习回顾、继承、抽象类、模板设计模式

    day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习 类的创建------>必须掌握 对象的创建和使用------>必须掌握 匿名对象 继承 如何继承-继承的格式--- ...

  6. 【复习回顾、继承、抽象类、模板设计模式】

    day01[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 抽象 ...

  7. 10.7 抽象类最佳实践-模板设计模式

    10.7.1 基本介绍 10.7.2 模板设计模式能解决的问题 10.7.3 最佳实践 abstract public class Template { //抽象类-模板设计模式 public abs ...

  8. Java 抽象类最佳实践-模板设计模式

    目录 1.基本介绍 2.模板设计模式能解决的问题 3.最佳实践 1.基本介绍 抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展.改造,但子类总体上会保留抽 ...

  9. day01-【复习回顾、继承、抽象类、模板设计模式】

    复习总结[复习回顾.继承.抽象类模板设计模式] 今日内容 面向对象复习------>必须掌握 继承 继承的格式------>必须掌握 继承后成员访问特点------>必须掌握 抽象类 ...

最新文章

  1. UNION会自动删除重复项,union与union all的差异
  2. ssm实训报告心得_Java开发学习心得(一):SSM环境搭建
  3. React 的 Hello World
  4. 这个小伙因WannaCry勒索软件一夜成名,获得一年免费披萨
  5. Part 3 —— 发布 Go Modules
  6. Inside the Linux Operating System[1]
  7. linux下安装配置nginx,Linux下安装与配置nginx
  8. java根据种子生成固定值_java固定种子随机数预测
  9. 2021苏州大学计算机考研分数,2021苏州大学考研分数线已公布
  10. Twitter引流如何开发客户
  11. CVPR 2019 Oral 论文解读 | 百度提出关于网络压缩和加速的新剪枝算法
  12. oracle中月初月末的表示
  13. js中动态获取页面的高度和宽度的方法总结
  14. 微信小程序开发常见问题解答
  15. Ubuntu设置开机自启动
  16. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training
  17. 小型气象站参数有哪些
  18. 查询搜狗域名权重对网站SEO优化有什么作用?
  19. 大数据企业面试真题汇总三
  20. 视频转码 via FFmpeg

热门文章

  1. python--ant环境搭建
  2. office安装文件
  3. table表格数据无缝循环滚动
  4. 【Linux】万兆网卡82599驱动安装
  5. 拔掉了腾讯微博的输氧管后,新浪微博能逃过中年危机吗?
  6. Caused by: java.sql.SQLException: The table ‘XXX’ is full(mysql the table is full)
  7. JavaEye范凯谈唐骏造假事件
  8. 键盘虚拟码和字符对照表
  9. 原生js实现简化版幸运大转盘
  10. Object Oriented Programming(1)