java类的继承相关知识

1. 类的继承是指新类重用(继承)了现有类的方法和字段,同时还可以向新类中增添新的方法和字段以满足新的需求。现有类被称为父类,新类被称为子类。

继承时子类可以增加新的字段和方法,也可以对父类的方法进行覆盖(重写)。在子类中调用父类的方法,使用super关键字。

2. java只支持单继承,不允许多重继承,即一个类只能有一个父类,但继承未必只是一层,一个祖先类可以同时有多个子孙继承链。

3. 置换法则:无论何时,只要程序需要一个父类对象,那么就可以用一个子类对象来替代它
例如:每个经理都是员工,可以把经理对象(子类对象)赋给员工变量(父类变量)

class Manager extends Employee
{ 
  ...
  private double bonus;
  public void setBonus(double b)
  { 
    bonus = b;
  }   
} 
// 可以把子类的对象赋给父类变量
Employee e;
e = new Employee(...); // 变量e指向 Employee 类型对象
Manager boss;
boss = new Manager(...);
e = boss; // 变量e指向 Manager 类型对象
boss.setBonus(5000); // 正确
// 下面的调用错误,e为Employee类型,没有setBonus方法
e.setBonus(5000);

4. 多态:一个对象变量可以指向多种实际类型对象的现象被称为“多态”。

动态绑定:在运行时自动选择正确的方法进行调用的现象被称为“动态绑定”。java中如果方法是用 private 、static或final修饰,则采用静态绑定,否则都采用动态绑定。通过动态绑定无需对现有代码进行修改,就可以对程序进行扩展。

5. final关键字:类中用 final 关键字修饰的方法,在其子类中不能被覆盖。用 final 关键字修饰的类不能被继承。

class Employee {
...
  public final String getName () {
    return name;
  } //不能在 Employee 的子类中重写 getName 方法  
} 
final class Executive s extends Manager {
  ...
} //不能从 Executive 派生子类

一般可以把类或类中的方法设置 final 的来避免不明确情况的发生,即防止多态性的发生。例如, Math类和System类都是final类。

6. 类型转换:像把浮点数转换成整数一样,有时也需要把某个类的对象引用转换为另一个类的对象引用。对于类类型的转换只能在继承链上的类之间进行。
子类对象转换成父类对象可以隐式转换,父类对象转换成子类对象需要强制类型转换。

Manager boss = new Manager(...);
Employee e = new Employee(...);
e = boss; // 正确,可以隐式转换
boss = e; // 错误,需要强制类型转换
boss = (Manager)e; //正确
Date c = (Date)boss; //错误,c和boss的类型不具有继承关系

7. 抽象类:没有方法体的方法称为抽象方法,即抽象方法只需声明,不需实现。用关键字abstract修饰抽象方法。一般称含有抽象方法的类称为抽象类,也用abstract修饰。

抽象类不能被实例化,即不能用 new 关键字去产生一个抽象类的对象,但可以用抽象类声明变量
去指向该抽象类的子类对象。
含有抽象方法的类一定是抽象类,但抽象类中仍然可以有非抽象方法。
抽象类可以作为基类派生出子类,抽象类的子类如果是一个非抽象类,那么该子类必须覆盖父类中所有的抽象方法,否则这个子类还是抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值