抽象类

抽象类。
抽象类的介绍
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  }

 

posted @ 2022-06-07 10:57  捞月亮的渔夫  阅读(110)  评论(0)    收藏  举报