抽象类
抽象类。
抽象类的介绍
1)用abstract关键字来修饰一个类时,这个类就叫抽象类
访问修饰符abstract类名{}
2)用abstract关键字来修饰一个方法时,这个方法就是抽象方法
访问修饰符abstract返回类型方法名(参数列表);//没有方法体
3)抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现
抽象类()
4)抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多
抽象类使用的注意事项和细节讨论 AbstractDetail01.java
1)抽象类不能被实例化[举例]
2)抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法[举例]
3)一旦类包含了abstract方法,则这个类必须声明为abstract[说明]
4)abstract只能修饰类和方法,不能修饰属性和其它的。[说明]
5)抽象类可以有任意成员【抽象类本质还是类】,比如:非抽象方法、构造器、静态属性等等[举例]
6)抽象方法不能有主体,即不能实现.如图所示
7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为
abstract类。[举例A类,B类,C类]
8)抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的。
课堂练习题 AbstractExercise01.java 5min练习
1)题1,思考:abstract final class A{}能编译通过吗,why?错误,final是不能继承
2)题2,思考:abstract public static void test2();能编译通过吗,why?错误,
static关键字和方法重写无关.
3)题3,思考:abstract private void test3(0);能编译通过吗,why?错误,private
的方法不能重写
4)编写一个Employee类,声明为抽象类,包含如下三个属性:name,id,salary。
提供必要的构造器和抽象方法:work()。对于Manager类来说,他既是员工,还
具有奖全(honus)的属性请使用继承的思想,设计CommonEmployee类和
ManagerE要求主握供必要的方法进行属性访问,实现workO),提示“经理/普
通员工名字工作中……
1 package com.Chapter01.Abstract;
2
3 public class Abstract02 {
4 public static void main(String[] args) {
5 Manager fei = new Manager("张飞", "20160404", 36500);
6 fei.work();
7 System.out.println("=========================================");
8 new CommonEmployee("张三","20200403",5600).work();
9 }
10 }
11 /*
12 4)编写一个Employee类,声明为抽象类,包含如下三个属性:name,id,salary。
13 提供必要的构造器和抽象方法:work()。对于Manager类来说,他既是员工,还
14 具有奖金(honus)的属性请使用继承的思想,设计CommonEmployee类和
15 ManagerE要求主握供必要的方法进行属性访问,实现workO),提示“经理/普
16 通员工名字工作中……
17 */
18 abstract class Employee{
19 //属性
20 private String name;
21 private String id;
22 private double salary;
23
24 //构造器
25 public Employee(String name, String id, double salary) {
26 this.name = name;
27 this.id = id;
28 this.salary = salary;
29 }
30 //抽象类方法没有方法体;
31 public abstract void work();
32
33 public String getName() {
34 return name;
35 }
36 public void setName(String name) {
37 this.name = name;
38 }
39
40 public String getId() {
41 return id;
42 }
43 public void setId(String id) {
44 this.id = id;
45 }
46
47 public double getSalary() {
48 return salary;
49 }
50 public void setSalary(double salary) {
51 this.salary = salary;
52 }
53 }
54
55 //经理类
56 class Manager extends Employee{
57 //特有属性
58 private double bonus;
59 //继承父类的构造器
60 public Manager(String name, String id, double salary) {
61 super(name, id, salary);
62 }
63
64 public double getBonus() {
65 return bonus;
66 }
67 public void setBonus(double bonus) {
68 this.bonus = bonus;
69 }
70
71 //继承父类的方法
72 @Override
73 public void work() {
74 System.out.println(getName()+"经理正在工作中......");
75 }
76 }
77
78 //普通员工类
79 class CommonEmployee extends Employee{
80
81 public CommonEmployee(String name, String id, double salary) {
82 super(name, id, salary);
83 }
84 @Override
85 public void work() {
86 System.out.println(getName()+"员工正在工作中.....");
87 }
88 }

浙公网安备 33010602011771号