在.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教师");
}
}
分享到:
评论