编程第三周的日常<一>

继承

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;
    

    } //多态的方法,

}

你可能感兴趣的:(编程第三周的日常<一>)