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; } }