`
aiyanbo
  • 浏览: 64263 次
  • 性别: 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
分享到:
评论

相关推荐

    20210623-华创证券-海容冷链-603187-深度研究报告:冷链扬帆上溯设备,专业化龙头展宏图.pdf

    20210623-华创证券-海容冷链-603187-深度研究报告:冷链扬帆上溯设备,专业化龙头展宏图.pdf

    电信设备-基于上游线圈检测器信息的路段排队上溯识别方法.zip

    电信设备-基于上游线圈检测器信息的路段排队上溯识别方法.zip

    Thinking in java(中文)

    类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7...

    Thinking in Java 中文第四版+习题答案

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.5 再论枚举器 ...

    Think in Java(中文版)chm格式

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1...

    JAVA_Thinking in Java

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    Java初学者入门教学

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    ThinkInJava

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    java 编程入门思考

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    thinkinjava

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    Thinking in Java简体中文(全)

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    java联想(中文)

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...

    上溯型鱼道生态设计在中国澎溪河汉丰坝的应用 (2012年)

    为中国目前新建的大坝工程修建上溯型鱼道提供了科学的生态设计理念和方法,这种生态设计的理念体现了对鱼类生物性和工程学两个学科(也可称之为生物工程学或生态水力学)原理的综合运用。 鱼道是指帮助河流中鱼类上溯...

    数据结构:二叉树

    数字结构课程设计时写的二叉树,代码结构不是很好,但是完全可以实现二叉树要求

    VC++2012编程演练数据结构《23》二叉树排序

    VC++2012编程演练数据结构《23》二叉树排序

    JavaScript基础和实例代码

    5.5.4 删除和替换节点 5.5.5 文本节点操作 5.6 对象的事件处理程序 5.7 浏览器兼容性策略 5.8 本章小结 第6章 String、Math、Array等数据对象 6.1 String对象 6.1.1 如何使用String对象方法操作字符串 6.1.2 获取...

    源文件程序天下JAVASCRIPT实例自学手册

    5.5.4 删除和替换节点 5.5.5 文本节点操作 5.6 对象的事件处理程序 5.7 浏览器兼容性策略 5.8 本章小结 第6章 String、Math、Array等数据对象 6.1 String对象 6.1.1 如何使用String对象方法操作字符串 6.1.2 获取...

Global site tag (gtag.js) - Google Analytics