通过对面向对象的理解,面向对象有四大特点:抽象性、封装性、继承性和多态性。
而我们来了解的就是面向对象的最重要特征继承:
继承就是一种联结类的层次模型,并且继承允许和鼓励类的重用。使用继承可以很好的
表述共性的方法,也能更好的体现java中的重用。我们可以从一个已有的类当中扩展出一个派生类,
派生类可以继承已有的类中的所有属性。已有的类也被称为父类、超类,派生类也被称为子类。派生类
更为适用修改和增加特殊的的需求,这也体现大自然中特殊和一般的关系。为了更好的理解继承,我们
通过下面的例子来了解继承:
员工表中拿薪资的有两种,一是拿年薪的,一是按小时拿薪资的。
/**
* 员工父类
* 这是拿年薪和拿时薪所共有的属性
* @author asus1
*
*/
public class Employee {
public String name;//姓名
public String address;//邮寄地址
public int SSN;//社保号
public int number;//员工号
public void println(){
System.out.println("邮寄支票给员工"+name+"的地址为"+address);
}
}
/**
* 子类,继承Employee中所有属性和方法
* 其中用到继承的关键字extends
* @author asus1
*
*/
public class Salary extends Employee{
public double salary;//年薪,为这个类特有的属性
/**
* 计算年薪
* @return 每周拿的薪资
*/
public double computerPay(){
System.out.println("计算拿固定工资的员工"+name+"的工资");//name 就是继承Employee父类中的属性
return salary/52;
}
}
/**
* 拿时薪子类
* 从Employee父类中使用关键字extends继承
* @author asus1
*
*/
public class Hourly extends Employee{
public double hourlyRate;//没小时报酬
public double hoursword;//每周工作时间
/**
* 计算时薪员工的工资
* @return pay员工工资
*/
public double coumuterPay(){
System.out.println("计算按时付酬员工"+name+"的工资");//name 就是继承Employee父类中的属性
double pay = 0.0;
if(hoursword <=40){
pay = hourlyRate*hoursword;
}else{//计算加班工资
pay = (hourlyRate * 40) + (hourlyRate * (hoursword - 40)*1.5);
}
return pay;
}
}