继承
1、从已有的类创建新类的过程就是继承(实现了代码的复用)
(1)
- 提供继承信息的称之为父类
- 提供继承信息的称之为子类
- 子类和父类是一种 is-a 的关系
(2)继承的特点
- Java是单继承的【一个类只有一个父类】
- 多层继承【一个爸爸可以有多个儿子,儿子也可以再生儿子】
(3)什么时候用继承
- 当事物之间存在所属关系时。
继承中成员变量的特点
- 1、当父类与子类成员变量同名时用“super.”来表示父类中的成员变量
- 2、this.是一个引用,总是指向当前的使用对象
- 3、super.不是引用,当子父类出现同名成员现象时,用于区分子父类成员
继承中、成员函数的特点
- 重写:子类在继承父类时,含有和父类中一样的函数,当创建子类对象时,执行的时重写之后的方法。
- 作用:沿袭了父类的功能
继承中构造函数的特点
- 1、在创建子类的对象时,先调用父类的构造方法,再调用子类的构造方法。
抽象类
- 含有抽象方法是类,没有实现方法,用abstract修饰。
- 抽象类的特点:抽象类无法创建对象,因为含有抽象的方法。继承了抽象类的子类,没有重写父类中的抽象方法,该子类还是抽象类。抽象类是专门留给其他类去继承的类。
实例
- 公司里的各个员工的工资状况
1、写一个员工的父类
package cn.edu.swpu;
/**
- 发工资
- @author Administrator
*/
public abstract class Employee1 {
protected String name;
/**
* 构造器
*
* @param name
* 员工姓名
*/
public Employee1(String name) {
this.name = name;
}
/**
* 读取名字
*
* @return返回名字
*/
public String getName() {
return name;
}
/**
* 计算月薪
* @return 返回月薪
*/
public abstract double getSalary();
}
2、分别写经理、程序员、销售员的子类
package cn.edu.swpu;
/**
部门经理
@param name
/
public class Manager1 extends Employee1 {
/*构造器
-
@param name
*/
public Manager1(String name) {
super(name);
// TODO Auto-generated constructor stub
}@Override
public double getSalary() {
// TODO Auto-generated method stub
return 12000;
}
}
package cn.edu.swpu;
/**
- 程序员
- @author Administrator
*/
public class Programmer1 extends Employee1 {
private int workingHour;
/**
* 构造器
*
* @param name 名字
*
*/
public Programmer1(String name) {
super(name);
}
/**
* 设置本月工作时间
*
* @param workingHour 工作时间(以小时为单位)
*
*/
public void setWorkingHour(int workingHour) {
this.workingHour = workingHour;
}
@Override
public double getSalary() {
// TODO Auto-generated method stub
return 150 * workingHour;
}
}
package cn.edu.swpu;
/**
- 销售人员
- @author Administrator
/
public class Salesman1 extends Employee1 {
private double sales;
/*
构造器
@param name 销售人员的名字
/
public Salesman1(String name) {
super(name);
// TODO Auto-generated constructor stub
}
/*写销售额
-
@param sales 销售额
*/
public void setSales(double sales) {
this.sales = sales;
}@Override
public double getSalary() {return 1500 + sales * 0.05;
} //多态的方法,
}