多态的理解

多态

概念:

父类引用指向子类对象,从而产生多种形态。

​ Person a = new Student();

二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。

父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法

下面举两个体现多态的例子:

1、传参多态

以父类作为参数时,可以传父类的子类作为参数(有点拗口,直接上案列)

先定义一个Person类作为父类

public class Person {
    String name;
}

再定义Student类和Teacher类作为Person类的子类并继承

Student类:

public class Student extends Person {
}

Teacher类:

public class Teacher extends Person {
}

再来个测试类Test:

public class Test {
    public static void main(String[] args) {
        Student student = new Student();//创建学生对象
        student.name = "学生";
        Teacher teacher = new Teacher();//创建老师对象
        teacher.name = "老师";
        eat(student);//执行方法
        eat(teacher);
    }
//定义一个方法,Person类的对象作为参数
    private static void eat(Person person) {
        System.out.println(person.name + "吃饭");
    }
}

执行结果:

在这里插入图片描述

我们定义的eat(Person person)方法传递的参数是Person类的,但是当我们传递的参数为Person类的子类(Student类和Teacher类)时,程序正常执行。上面的示例就是传递参数的多态。

2、返回值的多态

以父类作为返回值类型时,可以用子类作为返回值类型。(直接上案列)

    private static Person print(int type){
        switch (type){
            case 1:
                return new Student()//返回一个Student类型的对象,程序正常执行
            case 2:
                return new Teacher();//返回一个Teacher类型的对象,程序正常执行
        }
        return null;
    }

我们定义的print方法返回值是Person类型的,实际上只要是Person类型的子类对象都可以作为返回值返回。这是返回值的多态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值