面向对象6---抽象
来源:互联网 发布:go高级编程书籍 编辑:程序博客网 时间:2024/06/05 09:09
一.抽象类的概述及特点
- 抽象类的概述:将功能定义为抽象的,那么该类就是抽象类
- abstract关键字:抽象
抽象类的特点:
抽象类和抽象方法必须用abstract关键字修饰
格式:
abstract class A{}
public abstrsct void show();抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类不能实例化
抽象类子类的特点:
- 子类可以是抽象类(无任何意义)
- 子类是非抽象类,必须要重写父类中的抽象方法,然后去使用子类的自己的功能
抽象类的成员特点:
- 成员变量:可以是变量,也可以是常量
- 成员方法:可以是抽象方法,也可以是非抽象方法
- 构造方法:有构造方法,但是不能实例化(用于子类访问父类数据的初始化)
抽象类不可和以下关键字共存
private 冲突
final 冲突
static 无意义
二.抽象类的练习
- 假如我们在开发一个系统时需要对员工类进行设计,程序员包含3个属性:姓名、工号以及工资。
经理也是员工,除了含有程序员的属性外,另为还有一个奖金属性。
请使用继承的思想设计出程序员类和经理类。要求类中提供必要的方法进行属性访问。
员工抽象类:
//员工抽象类public abstract class Employee{ //成员变量 private String name; private String employeeId; private int selary; //无参构造方法 public Employee() { } //有参构造方法 public Employee(String name, String employeeId, int selary) { super(); this.name = name; this.employeeId = employeeId; this.selary = selary; } //提供公共的访问方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmployeeId() { return employeeId; } public void setEmployeeId(String employeeId) { this.employeeId = employeeId; } public int getSelary() { return selary; } public void setSelary(int selary) { this.selary = selary; } //抽象方法 public abstract void work();}
程序员类:
public class Programmer extends Employee{ public Programmer() { super(); } public Programmer(String name, String employeeId, int selary) { super(name, employeeId, selary); } public void work(){ System.out.println("敲代码"); }}
经理类:
public class Manager extends Employee{ //成员变量bonus private int bonus; public int getBonus() { return bonus; } public void setBonus(int bonus) { this.bonus = bonus; } public Manager() { } public Manager(String name, String employeeId, int selary,int bonus) { super(name, employeeId, selary); this.bonus = bonus; } public void work(){ System.out.println("和客户交流"); }}
测试类:
public class Test { public static void main(String[] args){ Employee a = new Programmer("王一","12345",5000); a.work(); System.out.println(a.getName()+","+a.getEmployeeId()+","+a.getSelary()); System.out.println("--------------------"); Employee b = new Manager("王二","12346",5000,2000); b.work(); System.out.println(b.getName()+","+b.getEmployeeId()+","+b.getSelary()); System.out.println("--------------------"); }}
阅读全文
0 0
- 面向对象6---抽象
- Java面向对象(6)抽象类
- 面向对象----抽象----封装
- 面向对象—抽象
- 面向对象--抽象类
- 面向对象-抽象类
- 面向对象-抽象类
- 面向对象之抽象
- 面向对象-抽象类
- 面向对象-抽象类
- 面向对象-抽象
- 面向对象--抽象类
- 面向对象 抽象方法 抽象类
- 面向对象地本质-抽象
- 面向对象地本质-抽象
- 面向对象之抽象类
- 面向对象之抽象方法
- 面向对象----抽象的应用
- 函数签名(方法签名)Type signature
- javascript1
- 海思IVE函数使用-1 (DMA使用 HI_MPI_IVE_DMA)
- 关于java和python的环境搭建问题
- C语言重点知识复习2
- 面向对象6---抽象
- [并行计算] 1. 并行计算简介
- 类型转化
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
- GitBash的安装和使用
- SQL1999语法
- canvas的width和style里面的width
- Session
- maven项目中hibernate创建步骤