文章目录

  • 一、抽象类的概述
  • 二、抽象类的特点
  • 三、案例(抽象类_员工类代码实现)

一、抽象类的概述


案例:抽象类

Test测试类部分代码

package Package1;public class Test {public static void main(String[] args) {//测试狗类Dog dog = new Dog();dog.eat();//测试老鼠类Mouse mouse = new Mouse();mouse.eat();System.out.println("-----------------");//通过多态来测试Animal an = new Dog();an.eat();}
}

Animal类(父类(抽象类)) 部分代码:

package Package1;//父类:动物类(抽象类)
public abstract class Animal {//抽象方法(特点:要求子类必须重写)public abstract void eat();
}

Dog类(子类) 部分代码:

package Package1;//子类:狗类
public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃骨头");}}

Mouse类(子类) 部分代码:

package Package1;//子类:老鼠类
public class Mouse extends Animal {@Overridepublic void eat() {System.out.println("老鼠吃奶酪");}
}

输出结果

二、抽象类的特点



Test类部分代码:

package Package1;public class Test {public static void main(String[] args) {//抽象类不能new(抽象类不能实例化)//Animal an = Animal();  报错!//初始化抽象类Animal an = new Cat();System.out.println("--------------");//抽象类的成员特点an.name = "汤姆";System.out.println(an.name);//an.AGE = 50; //代码会报错,原因是常量的值不能发生改变System.out.println(an.AGE);}
}

Animal类(父类(抽象类)) 部分代码:

package Package1;//父类:动物类(抽象类)
public abstract class Animal {//构造方法public Animal() {}public Animal(String name) {this.name = name;}//成员变量:其值可以变化String name = "哈士奇";//成员常量(一般全用大写字母),其值不能发生改变final int AGE = 30;//抽象方法(特点:要求子类必须重写)//吃public abstract void eat();//睡public abstract void sleep();//非抽象方法public void call() {System.out.println("动物会叫");}}

Dog类(子类(抽象类)) 部分代码:

package Package1;//子类:狗类
public abstract class Dog extends Animal {}

Cat类(子类) 部分代码:

package Package1;//子类:狗类
public class Cat extends Animal {//子类是普通类,要重写所有的方法@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic void sleep() {System.out.println("猫卧着睡");}}

总结:
抽象类中的成员比普通类多一种:抽象方法
其它和普通类一样

三、案例(抽象类_员工类代码实现)

案例:定义员工之间的继承关系并使用

Test测试类部分代码

package Package;public class Test {public static void main(String[] args) {//测试程序员类Employee em = new Coder();em.work();//测试经理类Employee em2 = new Manager();em2.work();System.out.println("--------------");//扩展内容:快速实例化//需求:创建一个姓名叫张三,工资为30000,工号为:研发部007的程序员/*Coder c = new Coder();c.setName("张三");c.setSalary(30000);c.setId("研发部007");System.out.println("姓名:"+c.getName());System.out.println("工资:"+c.getSalary());System.out.println("工号:"+c.getId());*/Coder c = new Coder("张三", 30000, "研发部007");System.out.println("姓名:" + c.getName());System.out.println("工资:" + c.getSalary());System.out.println("工号:" + c.getId());//需求:创建一个名字叫:李四,工资为:40000,研发部01,奖金为100000的经理   }Manager m = new Manager("李四", 40000, "研发部01", 100000);System.out.println("姓名:" + m.getName());System.out.println("工资:" + m.getSalary());System.out.println("工号:" + m.getId());System.out.println("奖金为:" + m.getBonus());}
}

Employee类(父类(抽象类)) 部分代码

package Package;//父类:员工类
public abstract class Employee {//成员变量//姓名private String name;//工资private double salary;//工号private String id;//构造方法//空参构造public Employee() {}//全参构造public Employee(String name, double salary, String id) {this.name = name;this.salary = salary;this.id = id;}//getXxx(),setXxx()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 String getId() {return id;}public void setId(String id) {this.id = id;}//成员方法//工作(抽象类)public abstract void work();
}

Coder类(子类) 部分代码

package Package;//子类:程序员类
public class Coder extends Employee {//小细节:在实际开发中,子类一般都有两个构造方法//子类的空参构造访问父类的空参构造//子类的全参构造访问父类的全参构造public Coder() {super();}public Coder(String name, double salary, String id) {super(name, salary, id);}@Overridepublic void work() {System.out.println("程序员要敲代码");}
}

Manager类(子类) 部分代码

package Package;//子类,经理类
public class Manager extends Employee{public Manager() {}public Manager(String name, double salary, String id, int bonus) {super(name, salary, id);this.bonus = bonus;}//奖金private int bonus;public int Bonus() {return bonus;}public int getBonus() {return bonus;}public void setBonus(int bonus) {this.bonus = bonus;}@Overridepublic void work() {System.out.println("经理看程序员敲代码");}
}

输出结果

【笔记】Java中抽象类的概述、抽象类的特点、案例(抽象类_员工类代码实现)相关推荐

  1. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  2. java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...

    java中的return this什么时候用,返回的是类里面的方法类型,还是实例类??下面的代码什么意思? public class RoleService extends BaseService { ...

  3. Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...

      Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...

  4. Java中Date类型如何向前向后滚动时间,( 附工具类)

    Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: 1 import java.text.SimpleDateFormat; 2 import java.util.Cale ...

  5. string类转数组 java_将java中的 string 类型转成 数组案例

    这个要看你的具体需求了.如果是有分隔符的那种例如"a,b,c";就直接分割就行了. String string = "a,b,c"; String [] str ...

  6. java中面积构造方法_JAVA图形面积与周长(抽象类)

    /*面向对象具有抽象性.封装性.继承性.多态性.抽象性是将具有一致的数据结构(属性)和行为(操作)的对象抽象成类 一个类就是一种抽象.封装性体现在Java中的数据除了基本类型的数据外,都以对象的形式存 ...

  7. Java笔记-Java中桥接模式

    最近在研究一个APP,逆向后发现貌似用了桥接模式,特意学习了下Java中的桥接模式. 关于C++的桥接链接如下: https://blog.csdn.net/qq78442761/article/de ...

  8. JAVASE学习笔记 Java中的常用类--StringBuffer类、StringBuilder类

    1.StringBuffer类概述 在Java中我们如果对字符串进行拼接操作,每次拼接都能构建一个新的String对象,这样操作既费时有浪费时间,StringBuffer类就能解决这个问题. Stri ...

  9. java学习笔记-java中运算符号的优先顺序

    java中各种运算符具有优先级顺序,一般会先计算优先级高的,再计算优先级低的.可以使用()使得优先级变为最高. 在算术运算中,优先级为 ++ -- * / + - 在在逻辑运算中的优先级是 ! 取反 ...

最新文章

  1. 2021 年“微软学者”奖学金 11 人名单公布!
  2. 矩阵的逆以及实际应用
  3. openresty package.path require 报错
  4. 【LeetCode笔记】232. 用栈实现队列(Java、栈、队列)
  5. Kubernetes的共享GPU集群调度 1
  6. 【工程项目经验】函数编译可见性
  7. 使用java将String类型的json转为json对象并进行取出响应的值
  8. FastJson(阿里巴巴)基础
  9. 婚姻生活,艰难困苦中,水深火热中
  10. 计算机语言怎么学,教你如何学习计算机编程语言
  11. 箱体图Boxplot及Python绘制方法
  12. mirna富集分析_miRNA富集分析数据库
  13. Maxcompute 小记1
  14. 理论+实操:K8S搭建dns内部服务与控制器controlls五种模式
  15. ubuntu14.04 下载安装 yocto平台
  16. allergro音乐术语什么意思_音乐术语里面fz是什么意思?
  17. PCB生产时“补偿”“开窗”是什么意思
  18. 【OBS】OBS预览
  19. 成为高可视化地图应用专家-赋能智慧城市建设
  20. ​如何高效开发一个OA办公系统​?

热门文章

  1. 【C语言程序】将字符串“Where there is a will,there is away.”保存到字符数组中,然后将其翻译成中文“有志者事竟成。”
  2. python 学习笔记(二)
  3. 贝叶斯 概率 似然函数
  4. HTTP请求到爬虫代码的终南捷径
  5. 毕设:智能组卷平台(遗传算法)
  6. qt connect函数_小白学QT 使用VS 给 qt 添加信号槽
  7. 米粉节来袭,小米电视音响竟然卖这个价
  8. 印象大使_宣布开放组织大使计划
  9. 索贝4k信号采集服务器,浪潮联合索贝:软件定义存储AS13000服务世界杯
  10. L-BFGS算法基础_matlab