多态 --> 替换原则

替换原则:当一个软件实体可以使用某个类时,那么一定可以使用该类的子类,并且原代码并不会感觉父类与子类之间的差异。然而相反的替换却是不可以成功的。

如:一个经理一定是个雇员,而雇员不一定是经理。

编译器强制要求: 父类的对象变量可以引用该类的子类,而无法引用该类的父类。原因也如下代码:

public class Employee{}

public class Manager{
    public void setBonus(double bonus){
        this.bonus = bonus;
    }

    private double bonus;
}

public class TypeConversionTest{
    public static void main(String[] args){
        Manager manager = new Employee(); //假设合法的话.
        manager.setBonus(1.0); //用户必然会使用该方法.那么在一个没有该方法的对象上面应用方法必然导致错误
    }
}

可以轻松的逃脱Java编译器的约束,对我们的编程要求就更高了.

public class ArrayTypeConversion{
   
    public static void main(String[] args){
         Employee employees[] = new Employee[2];
         Manager managers[] = new Manager[2];
         employees = managers;
         
         emplyees[0] = new Employee();
          
         managers[0].setBonus(1.0);//会报出异常ArrayStoreException.因为我们尝试在Employee对象上面调用Manager对象的方法。原因很简单,引用指向的都是Emplyee对象
    }
}

转载于:https://www.cnblogs.com/papertigerv5/archive/2012/10/07/2714057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 多态是面向对象编程中的一个重要概念,它指的是同一个方法或者同一个在不同的情况下表现出不同的行为。在实际编程中,我们可以通过继承、接口等方式来实现多态。通过多态,我们可以提高代码的可复用性和可扩展性,使得程序更加灵活和易于维护。在使用多态时,我们需要注意一些细节,比如要遵循里氏替换原则,保证子可以替换,不破坏程序的正确性。 ### 回答2: 多态,是面向对象编程中一个非常重要的概念,也是面向对象编程的三大特性之一,同封装和继承。它允许不同的对象对同一个消息作出不同的响应,也就是说,多态性指的是同一操作符或方法作用于不同的对象时,会产生不同的结果。在实际开发中,多态性可以使我们在编写程序时更加灵活、方便和高效。 多态性的实现,通常是通过继承和接口来实现的。当一个实现了一个接口时,该可以被看作是该接口的实例,并且可以被统一的调用。而在实际的应用中,多态常常会被用于设计模式中的策略模式、工厂模式等等。 在阿猫阿狗的第3关中,我们需要使用多态来实现不同种的动物之间的交互。在这个例子中,我们使用了一个抽象的动物 Animal 去定义所有动物的公共属性和方法,然后针对不同的种动物,我们分别定义了不同的子。例如,猫和狗是不同的子,它们继承了 Animal ,然后根据自己的需要进行了方法的重写,使得它们能够根据不同的动物状态进行不同的动作。 在游戏中,玩家需要根据游戏的要求,选择不同种的动物进行操作。因为所有动物都继承了 Animal ,所以我们可以通过 Animal 的实例来操作不同种的动物,而且操作的方式和方法都是一样的,这就是多态性的实现。 总之,多态性作为面向对象编程的重要特性之一,可以极大的提高程序的灵活性和可扩展性。在实际开发中,我们可以将多态性应用于更加复杂的系统设计中,从而使我们的程序设计更加高效、合理和可靠。 ### 回答3: 多态是面向对象编程的核心之一,它体现了面向对象编程的一个重要特征:重载。以“阿猫阿狗”为例,猫和狗都是宠物,它们有相同的属性,例如名字、年龄和品种等,但猫和狗又具有不同的行为,比如狗会汪汪叫,猫会喵喵叫。这就是多态多态的实现,需要利用面向对象的继承、封装和重写机制。 在“阿猫阿狗”这个例子中,我们可以定义一个Pet,表示所有宠物都需要具备的属性和行为。然后,定义猫和狗的,它们都继承自Pet。在Pet中,我们定义一个抽象的叫声方法,让猫和狗各自去重写这个方法,在具体的实现中,狗会输出“汪汪”,而猫会输出“喵喵”。 这样,我们就可以实现对猫和狗的多态操作了。在程序中,我们可以定义一个Pet型的引用变量,它可以指向一个猫或者一个狗对象。当我们调用叫声方法时,具体执行哪个方法是由实际的对象来决定的。例如,如果Pet变量指向一个狗对象,调用叫声方法时就会输出“汪汪”。 多态的使用让程序变得更加灵活和可扩展,我们可以通过它来管理不同种的对象,简化代码结构,提高代码的重用性和可维护性。在实际开发中,多态也是非常常用的,比如在Java中,很多核心API都支持多态调用,例如List、Set和Map等容器,可以存储和操作不同型的对象。 总之,多态是面向对象编程中非常重要的概念,实现多态需要继承、封装和重写技术的支持,它使得程序更加灵活和可扩展,提高了程序的重用性和可维护性。在实际开发中,尤其是大型项目中,多态的应用更是不可或缺的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值