JAVA-多态

本文详细介绍了Java中的多态性概念,包括其表现形式、成员访问特点以及实现前提。通过代码示例展示了如何创建多态对象并调用方法。同时,阐述了多态在代码解耦、扩展性和维护性方面的优势,例如使用父类类型作为方法参数来接受不同子类对象的能力。
摘要由CSDN通过智能技术生成

一:什么是多态?

  • 同类型的对象,执行同一个行为,会表现出不同的行为特征。

多态的常见形式

  • 父类类型 对象名称 = new 子类构造器;
  • 接口 对象名称 = new 实现类构造器;

多态中成员访问特点

  • 方法调用:编译看左边,运行看右边。
  • 变量调用:编译看左边,运行也看左边。(多态侧重行为多态)

多态的前提

  • 1有继承/实现关系;2有父类引用指向子类对象;3有方法重写。

代码示例

package com.d12_polymorphic_advantage;

/**
 * 定义父类Animal
 */
public abstract class Animal {
    //抽象方法
    public abstract void run();
    //定义常量
    public String name = "父类名字";
}
package com.d12_polymorphic_advantage;
//子类Dog
public class Dog extends Animal{
    //重写父类抽象方法
    @Override
    public void run() {
        System.out.println("Dog的run方法");
    }

    //定义常量
    public String name = "Dog名字";
}
package com.itheima.d12_polymorphic_advantage;
//子类Cat
public class Cat extends Animal{
    //重写父类抽象方法
    @Override
    public void run() {
        System.out.println("Cat的run方法");

    }

    //定义常量
    public String name = "Cat名字";
}
package com.itheima.d12_polymorphic_advantage;

/**
 * 测试类Test
 */
public class Test {
    public static void main(String[] args) {
        //声明多态方式
        //父类 对象名 = new 子类构造器

        //方法调用:编译看左边,运行看右边。
        //变量调用:编译看左边,运行也看左边。(多态侧重行为多态)
        Animal a = new Dog(); //此时,a的类型为父类Animal
        Animal b = new Cat(); //此时,b的类型为父类Animal

        a.run();
        b.run();

        //变量调用:编译看左边,运行也看左边。
        System.out.println(a.name);
        System.out.println(b.name);

    }
}
输出结果:

Dog的run方法
Cat的run方法
父类名字
父类名字

二:多态的优势

  • 在多态形式下,右边对象可以实现解耦合,便于扩展和维护。
  • 定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。

代码示例:

        重写测试类Test,验证多态的优势。

package com.itheima.d12_poly;

/**
 * 测试类Test  多态的优势
 */
public class Test {

    //定义一个接收父类Animal类型参数的方法
    public static void go(com.itheima.d12_poly.Animal a) {
        System.out.println("调用go方法。");
    }
    public static void main(String[] args) {
        com.itheima.d12_poly.Animal a = new com.itheima.d12_poly.Dog();
        com.itheima.d12_poly.Animal b = new com.itheima.d12_poly.Cat();

        //调用go方法
        go(a);
        go(b);
    }
}


输出结果:

调用go方法。
调用go方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值