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

相关推荐

    第7章 多形性.pdf

    上溯造型是指将子类对象转换为父类对象的过程,无需显式转换,因为子类天然继承了父类的所有属性和方法。在Java中,这允许我们使用父类引用处理子类对象,提高了代码的通用性。例如,`Instrument`是基类,`Wind`、`...

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

    "基于上游线圈检测器信息的路段排队上溯识别方法"是一个专门针对交通流量监控和管理的技术,旨在提高道路通行效率,减少拥堵。该方法利用电信设备收集的数据进行分析,以识别路段上的车辆排队情况,并追溯其来源,...

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

    第三,乳制品消费结构正转向低温市场,尤其是酸奶和巴氏奶,人均消费量与海外相比还有较大的增长空间;最后,农产品方面,冷链的核心需求在于果蔬肉渔等生鲜产品的流通,目前中国的流通率低于发达国家,但政府政策的...

    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章《多形性》深入讲解了Java的多态性,包括上溯造型的概念、方法绑定、扩展性和覆写。多态性是面向对象编程中的一个重要特性,它允许我们编写更加灵活和可维护的代码。 总之,《Thinking in Java》全面覆盖了...

    Java继承概念详细解读

    上溯造型是指将子类对象转换成父类对象的过程。例如,在Person中定义的show方法是用来接收Person句柄的,但是在调用时可以传入Student对象的引用。这是因为Student对象也是Person对象。在show方法中,传入的句柄...

    Java面向对象程序设计多态性.ppt

    3. **对象造型**:在Java中,对象造型分为两种类型:上溯造型(向上转型)和下溯造型(向下转型)。上溯造型是自动进行的,例如,一个子类对象可以被视为父类对象,因为它继承了父类的所有属性和方法。而下溯造型...

    第11章 运行期类型鉴定.pdf

    1. **类型转换**:当一个对象引用被上溯造型(upcasting)为它的超类引用时,虽然失去了具体的类型信息,但可以通过强制类型转换(casting)回原始类型来恢复这些信息。例如,从`Object`类型转换为`Shape`类型,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.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 ...

Global site tag (gtag.js) - Google Analytics