java继承

 

类继承格式

 

class Manager extends Employee
{

    //添加方法和域
  public void setBonus(double b)
  {
    bonus = b;
  }

    public getSalary()
    {
        double baseSalary = super.getSalary();
        return baseSalary + bonus;
    }
    
  private double bonus;

}

  java继承采用extends关键字,代替了c++里面的冒号,在java中,所有继承都是公有继承,没有C++中的私有继承和保护继承。

在这里,Manager为Employee的子类,Employee为Manager的超类。 

super

    由于Manager的薪水计算方法跟普通雇员的计算方法不同,所以需要在Manager类中复写Employee类中的getSalary方法,

由于Manager的薪水为基本工资再加奖金,所以可以调用Employee的getSalary方法然后再加上奖金,但是由于两者方法名字相同,

所以不能直接调用,需要使用super.getSalary()的方式来调用。super不是一个对象的引用,而是指示编译器调用超类方法的特有关键字,

与this不同。

  

    super还可以在构造器中使用,例如在Manager中有如下构造器:

public  Manager(String n, double s, int year, int day)

{

        super(n, s, year, day);

        bonus = 0;

}

    在上述构造器中,super是调用的超类中的构造器,由于Manager类的构造器不能对超类Employee的私有域进行初始化,所以只能通过调用

超类的构造器来完成初始化,然后再初始化子类新增的域。如果子类没有显式调用超类的构造器,则调用超类的默认构造器,如果超类不存在默认构造器,则会报错。

    在C++中,子类构造函数中会通过初始化列表来对父类进行初始化。

多态

   在java语言中, 对象变量是多态的。一个超类的对象变量可以引用一个超类对象,也可以引用任何一个子类的对象

posted @ 2013-11-23 11:18  王耀it  阅读(482)  评论(0编辑  收藏  举报