`
aiyanbo
  • 浏览: 66038 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

上溯造型与里氏替换原则

    博客分类:
  • java
阅读更多

 在.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教师");
    }
}

 

2
0
分享到:
评论
Global site tag (gtag.js) - Google Analytics