ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抽象类

2022-06-07 11:04:11  阅读:158  来源: 互联网

标签:salary name abstract public 抽象类 id


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

 

标签:salary,name,abstract,public,抽象类,id
来源: https://www.cnblogs.com/nzm-2019/p/16082263.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有