在.net中的里氏替换原则在javaEE中称为上溯造型; 定义: 父类引用指向子类对象 规则: 1.子类与父类符合 is - a 的关系 2.凡是子类可以出现的地方父类都可以出现 3.父类不可以强制转换成子类 4.父类对象有时候可以强制转换成子类对象 如: Person p = new Student; Student stu=(Student)p; 优点: 使用里氏替换原则可以增强程序的扩展性,减少方法重载的数量。 缺点: 丢失了子类所拥有的特有特性。 使用: 1.作为方法的返回类型 2.作为方法的参数类型
下面是代码:
public class Test{ public static void main(String[] args){ Person p = new Student(); p.setName("小燕"); //p.wrok(); Student stu= (Student)p;//将父类对象强制转换成子类对象 stu.wrok(); System.out.println("====================="); Test t= new Test(); Person p1=t.getInstace("stu"); p1.setName("小花"); p1.wrok(); t.wrok(p); } public Person getInstace(String type){//作为方法返回类型 if(type.equals("stu")){ return new Student(); } return new Teacher(); } public void wrok(Person p){//作为方法参数类型 p.wrok(); } } class Person{ private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; } public void wrok(){ System.out.println("人们要努力工作!"); } } class Student extends Person{ public void wrok(){ System.out.println(this.getName()+"要努力学习java"); } } class Teacher extends Person{ public void wrok(){ System.out.println(this.getName()+"是Java教师"); } }