多态的使用说明以及多态的优势与劣势

这周我进行了多态的学习,明白了多态的使用场景与好处,同时,也明白了多态的劣势与使用时应该注意的点。
1.使用多态有几个前提:有继承的使用,对方法进行重写。
2.在子类调用成员变量与方法时,编译与运行的方式是不一样的。我编写了如下代码,请看:

public class Domo7 {
     public Domo7() {
     }

     public static void main(String[] args) {
         Fu f=new Zi();
         System.out.println(f.name);
     }

}

以上是测试类。

public class Fu {

        String name="1";
        public void eat(){
            System.out.println("父亲在吃骨头");
        }
}

以上是父类。

public class Zi extends Fu {
    String name = "2";

    @Override
    public void eat() {
        System.out.println("儿子在喝汤");
    }
}

以上是子类。
运行结果是一。
查找了资料,我明白了,在调用成员变量时,编译看的是左边,运行看的也是左边,所以输出的结果是父类的name。
那么如果我调用的是方法呢,请看代码:

public class Domo7 {
     public Domo7() {
     }

     public static void main(String[] args) {
         Fu f=new Zi();
         System.out.println(f.name);
         f.eat();
     }

}

调用的是子类的方法。
所以,我明白了,在调用方法时,编译看的是左边,而运行看的则是右边。
那么接下来,我想说一下使用多态的好处。
我认为,多态最好的好处就是可以解耦合。这是专业名词,按照我的解释来说就是:我有一串代码,并将它用作父类,此时我又创作了一个子类去继承这个父类,这没有问题,可如果我有很多子类,都需要调用重写的方法,那么更改起来极为麻烦,但是我使用多态以后,这个问题就解决了,因为我可以改变子类,想用哪个用哪个,只要更改new关键字后面的子类就行了,非常方便。
那么多态的弊端又在哪儿呢,弊端在于多态没办法调用子类特有的方法。
请看如下代码

 public class Domo7 {
     public Domo7() {
     }

     public static void main(String[] args) {
         Fu f=new Zi();
         System.out.println(f.name);
         f.eat();
         f.show()
     }

}

此时show方法会报错,因为show方法是子类独有的方法。
那如果我硬是要调用这个方法我该怎么做呢。别着急,有办法。
请看如下代码。

 public class Domo7 {
     public Domo7() {
     }

     public static void main(String[] args) {
         Fu f=new Zi();
         System.out.println(f.name);
         f.eat();
         Zi z=(Zi) f;
         z.show();
     }

}

这时,show方法就不会报错了。这个形式类似于基本数据的强行转换一样。
将大的范围强行转换成小的范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多态是面向对象编程中的一个重要概念,它允许同一类型的对象在不同的情况下表现出不同的行为。它有以下优势劣势优势: 1. 可扩展性:多态允许在不修改现有代码的情况下增加新的子类或实现类,并使用它们作为父类或接口进行操作。这样可以使代码更加灵活和可扩展。 2. 可替换性:多态通过将对象视为其父类或接口类型,使得可以在运行时动态地替换对象,从而实现代码的解耦和重用。 3. 简化代码:多态可以通过将一组具有相似行为的对象抽象为一个父类或接口,从而减少代码的冗余和复杂性。 劣势: 1. 性能损失:由于多态需要在运行时确定实际调用的方法,可能会引入一定的性能损失。相比于直接调用具体类型的方法,多态需要进行额外的查找和判断操作。 2. 限制访问:多态中只能访问父类或接口中定义的方法和属性,不能直接访问子类或实现类特有的方法和属性。如果需要使用特定子类或实现类的功能,就需要进行类型转换。 3. 可读性降低:多态使用可能会使代码变得更加抽象和难以理解,特别是在复杂的继承关系和多层级的接口实现中。 总结来说,多态在提高代码的灵活性和可扩展性方面具有优势,但也可能带来一些性能损失和可读性降低的问题。在具体应用中,需要权衡利弊,并根据实际需求进行选择和设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值