基类子类对象间的替换

基类子类对象间的替换

用一段代码来呈现:

package test1;
public class Exchange {
   public static void main(String[] args) {
      Bb = newB();
      Aa = newA();
      System.out.println("200-100="+ a.func3(200, 100));
      System.out.println("100-50="+ a.func3(100, 50));
      System.out.println("100+200+100="+ b.func3(100, 200));
   }
}

abstract classC {
   int a, b;
   abstract int func3(int a, int b);
}

class A extendsC {
   public int func3(int a, int b) {
      return a - b;
   }
}


class B extendsC {
   public int func3(int a, int b) {
      return a + b + 100;
   }
}

运行结果
 200-100=100
 100-50=50
 100+200+100=400

替换原则通俗的来讲:子类可以扩展父类的功能,但不能改变父类的原有的功能。

它包含4层含义:

1.子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
2.子类也可以增加自己特有的方法 
3.当子类重载父类的方法时,方法前置条件(方法的形参)要比父类的方法的输入参数更加宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更加严格。
文章目录
  1. 1. 基类子类对象间的替换
|