黑马程序员技术交流社区
标题:
Java基础学习日记 - 抽象类
[打印本页]
作者:
qihuan
时间:
2015-7-10 23:19
标题:
Java基础学习日记 - 抽象类
package practice;
/**
* 抽象类
* 应用范围:当多个类中出现相同功能,但主体不同,这时可以只抽取功能定义,而不抽取主体。
*
* 特点: 1.抽象方法一定定义在抽象类中。
* 2.抽象方法和抽象类都必须被abstract关键字修饰。
* 3.抽象类不可以用new创建对象,因为调用没有意义。
* 4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
* 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
*
* 注意:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
*
* 练习: 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号和工资。
* 经理也是员工,除了含有员工的属性之外,还有一个奖金属性。请使用继承的思想设计出
* 员工类和经理类,类中提供必要的方法进行访问。
* @author Qihuan
*
*/
abstract class Employee {
private String name;
private String id;
private double pay;
Employee(String name, String id, double pay) {
this.setName(name);
this.setId(id);
this.setPay(pay);
}
public abstract void work();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getPay() {
return pay;
}
public void setPay(double pay) {
this.pay = pay;
}
}
class Pro extends Employee {
Pro(String name, String id, double pay) {
super(name, id, pay);
// TODO Auto-generated constructor stub
}
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("professional work");
}
}
class Manager extends Employee {
private int bonus;
Manager(String name, String id, double pay, int bonus) {
super(name, id, pay);
this.setBonus(bonus);
}
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("manager work");
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
}
public class AbstractPractice {
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2