1 类,超类,子类
子类是由超类继承而来,他具有超类的域,方法。子类与超类的关系是“is-a”。
超类:
Employee 类是一个超类,他具有通用的特性,name,hireday,salary ,作为每个员工都具有的共同属性。在 实例化 的时候通过构造器传递具体的参数,由于Employee 的域都定义为private ,所以如果不是构造器初始化域的话,要提供相应的set方法,对域赋值。(类设计的技巧:一定要将数据设计为私有的,一定要对数据进行初始化)
/**
@员工
@author qinpeng
@since
*/
public class Employee {
//姓名
private String name;
//生日
private String hireday;
//工资
private String salary;
public Employee(String name,String hireday,String salary){
this.name = name;
this.hireday = hireday;
this.salary = salary;
}
/**
* 吃饭方法
*/
public void eat(){
System.out.println("everyone must eat food everyday");
}
/**
* 睡觉方法
*/
public void sleep(){
System.out.println("people must sleep");
}
/**
* 获取姓名
* @return String
*/
public String getHireday() {
return hireday;
}
/**
* 获取姓名
* @return String
*/
public String getName() {
return name;
}
public String getSalary() {
return salary;
}
public void setName(String name) {
this.name = name;
}
public void setHireday(String hireday) {
this.hireday = hireday;
}
public void setSalary(String salary) {
this.salary = salary;
}
}
子类:
Manager 是继承Employee.他可以调用超类的方法。
超类对子类是“has - a”关系
/**
@Title Manager.java
@description manager class
@author qinpeng
@date 2009-7-22 下午10:18:54
*/
public class Manager extends Employee {
public static void main(String[] args){
Manager man= new Manager("manager","1985",2000);
// System.out.println("man is a manager"+man.getBonus()+man.getHireday()+man.getSalary());
man.setBous(500);
//超类的方法
man.getHireday();
man.getName();
man.getSalary();
//自己的方法
man.getBonus();
System.out.println("经理工资"+man.getSalary());
//is-a 的关系,实例化Employee.
//虽然是通过new Manager 来实例化 Employee,但是,emp还是一个Employee类型的
//emp 不能调用 Manager 的方法 和 域
Employee emp = new Manager("employee","1985",2000);
emp.getHireday();
emp.getName();
emp.getSalary();
System.out.println("普通员工工资"+emp.getSalary());
}
private double bonus;
/**
* 父类构造器
* @param name
* @param hireday
*/
public Manager(String name, String hireday,double salary) {
super(name, hireday, salary);
// TODO Auto-generated constructor stub
}
//子类声明的构造器必须是其超类已经定义过的构造器,或者显形的调用超类的构造器。否则子类不能定义。
//Employee 没有对应的构造器
public Manager(String name, String hireday,double salary,String bonus) {
super(name, hireday, salary);
// TODO Auto-generated constructor stub
}
// public Manager(){
// }
//超类中的 salary 定义为私有的,所以只能通过
//super.getSalary() 获取值
public double getSalary() {
return super.getSalary()+bonus;
}
public void setBous(double b){
bonus = b;
}
public double getBonus() {
return bonus;
}
}