FatherFloor - 里氏转换父类
package domain;
import java.util.ArrayList;
/**
* 里氏转换父类
*
* @author WanAkiko
*
*/
public class FatherFloor {
// 原父类execute方法参数为List<Object> list,此类在被其它子类继承并重写方法时,不同的类型接收值返回的结果不一致
// 在实际开发中父类与子类间的方法重写子类参数的类型必须大于父类参数类型,例如父类若为HashMap则子类必须为Map
// public void execute(List<Object> list) {
// System.out.println("父类List有参execute方法");
// }
public void execute(ArrayList<Object> list) {
System.out.println("父类List有参execute方法");
}
}
SonFloor - 里氏转换子类
package domain;
import java.util.List;
/**
* 里氏转换子类
*
* @author WanAkiko
*
*/
public class SonFloor extends FatherFloor {
// 原子类execute方法参数为ArrayList<Object> list,此类在继承父类并重写父类方法时,不同的类型接收值返回的结果不一致
// 在实际开发中父类与子类间的方法重写子类参数的类型必须大于父类参数类型,例如父类若为ArrayList则子类必须为List
// public void execute(ArrayList<Object> list) {
// System.out.println("子类ArrayList有参execute方法");
// }
public void execute(List<Object> list) {
System.out.println("子类ArrayList有参execute方法");
}
}
RichConvertTest - 继承关系测试类
package main;
import java.util.ArrayList;
import domain.FatherFloor;
import domain.SonFloor;
public class RichConvertTest {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<Object>();
// 继承关系没有遵循里氏转换规则时,不同类型的接收值接收的结果不一致
FatherFloor father = new SonFloor(); // 输出父类方法
father.execute(list);
SonFloor son = new SonFloor(); // 输出子类方法
son.execute(list);
}
}
运行示例: