多态的优点和弊端

1.优点

  • 提高了代码的维护性(继承保证)
  • 提高了代码的扩展性(由多态保证)




2.弊端

  • 不能访问子类特有的成员变量和成员方法

解决方法:把父类的引用强制转换为子类的引用。(向下转型)

案例演示

public class MyTest {
    public static void main(String[] args) {
        Fu fu = new Zi();
        System.out.println(fu.a);
        //System.out.println(fu.num);报错,多态中无法访问子类独有的成员变量
        //fu.test();报错,多态中无法访问子类独有的成员方法
        //那么,我们就想要访问子类独有的成员怎么办呢?我们可以向下转型
        Zi zi= (Zi) fu; //向下转型  将Fu类的对象fu强行向下转型为Zi类对象zi
        System.out.println(zi.num);
        zi.test();
    }
}
class Fu{
    int a=10;
}
class Zi extends Fu{
    int num=20;
    public void test(){
        System.out.println("子类一个特有的方法");
    }
}

多态前提条件



1.要有继承关系。



2.要有方法重写(多态主要作用:调用子类重写父类的方法)。 其实没有也是可以的,但是如果没有这个就没有意义。



3.要有父类引用指向子类对象

多态是面向对象编程中的一个重要概念,它允许使用父类类型的变量来引用子类类型的对象。多态具有以下优势和弊端: 优势: 1. 可扩展性:多态使得程序更加灵活和可扩展。通过定义通用的父类类型,可以在不修改现有代码的情况下添加新的子类类型。 2. 可替换性:多态使得代码更具有可替换性,可以在运行时动态地替换对象的实际类型。这意味着可以通过改变对象的具体实现类来改变程序的行为。 3. 代码复用:多态可以提高代码的复用性。通过将代码与具体的实现类解耦,可以更好地实现模块化和重用。 弊端: 1. 性能损失:多态需要在运行时进行类型检查和动态绑定,可能会导致一定的性能损失。相比于直接调用具体类型的方法,多态的方法调用可能需要更多的时间。 2. 可读性下降:多态的使用可能会导致代码的可读性下降。由于多态的对象类型在编译时无法确定,需要进行一些额外的推理和理解。 3. 隐藏细节:多态可能会隐藏子类的细节,使得代码更加抽象和难以理解。这可能会导致一些潜在的问题被掩盖,增加调试和维护的难度。 总的来说,多态在面向对象编程中具有重要的优势,但也需要在适当的时候进行权衡和使用。合理地利用多态可以提高代码的灵活性和可维护性,但过度使用可能会带来一些性能和可读性的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值