core---java 之继承篇(持续更新)

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

}

你可能感兴趣的:(java)