Java基础·第7篇:Java抽象类——把共性的先做了,剩下的你自己看着办
文章目录引入抽象方法和抽象类抽象类的使用抽象类的特征最后的话引入假设我们要写一个员工管理系统。所有员工都有姓名、工号、薪水这些属性也都需要打卡上班。这些代码每个子类都一样如果让每个子类都写一遍太麻烦了。但是工作这个行为经理和厨师完全不一样——经理管理团队厨师炒菜。这个父类没法统一写。这时候就需要抽象类通用的属性和方法姓名、打卡→ 父类写好子类直接继承无法统一的方法工作→ 父类只声明子类各自实现// 抽象类通用的我写好特殊的你们自己写abstractclassEmployee{privateStringname;publicEmployee(Stringname){this.namename;}// 通用的我写好了子类直接用publicvoidclockIn(){System.out.println(name打卡上班);}// 特殊的我只声明子类自己写publicabstractvoidwork();}抽象方法和抽象类abstract是抽象的意思用于修饰方法方法和类修饰的方法是抽象方法修饰的类是抽象类。抽象方法修饰符 abstract 返回值类型 方法名 (参数列表) //使用abstract 关键字修饰方法该方法就成了抽象方法抽象方法只包含一个方法名 而没有方法体。抽象类abstract class 类名字 { } //如果一个类包含抽象方法那么该类必须是抽象类。注意抽象类不一定有抽象方法 但是有抽象方法的类必须定义成抽象类。抽象类的使用抽象类就像一份半成品通用的部分已经帮你写好了你直接继承就能用特殊的部分只规定了方法名具体实现由你自己完成。// 抽象类先帮你干一点 abstract class Employee { private String id; private String name; private double salary; // 构造方法、getter/setter —— 这些我帮你写好了 public Employee() {} public Employee(String id, String name, double salary) { this.id id; this.name name; this.salary salary; } public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary salary; } // 打卡上班 —— 这个方法我也帮你写好了所有子类都一样 public void clockIn() { System.out.println(name 打卡上班); } // 工作 —— 这个我帮不了你自己看着办 public abstract void work(); } // 经理只管work其他不用管 class Manager extends Employee { public Manager() {} public Manager(String id, String name, double salary) { super(id, name, salary); } Override public void work() { System.out.println(getName() 正在管理其他人); } } // 厨师只管work其他不用管 class Cook extends Employee { public Cook() {} public Cook(String id, String name, double salary) { super(id, name, salary); } Override public void work() { System.out.println(getName() 正在炒菜多加点盐); } } // 测试 public class Demo10 { public static void main(String[] args) { Manager m new Manager(m001, 张三, 20000); m.clockIn(); // 继承来的不用自己写 m.work(); // 自己写的 System.out.println(---); Cook c new Cook(c001, 李四, 8000); c.clockIn(); // 继承来的不用自己写 c.work(); // 自己写的 } }抽象类的特征抽象类的特征总结起来可以说是 有得有失✅有得抽象类得到了拥有抽象方法的能力。❌有失抽象类失去了创建对象的能力。最后的话至此关于接口和抽象类的文章已经全部完成不知道有没有加深对接口和抽象类的理解能不能清楚的分别它们如果可以的话留下你的一件三连往后为你送上更加优质的内容最后感谢您的查阅
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2537855.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!