栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 多态

目录

1.多态概述

2.多态的前提和体现

3.多态中成员的访问特点

4.多态的好处和弊端

5.多态的转型


1.多态概述

       同一对象,在不同时刻表现出来的不同形态 

例如:狗

我们可以说狗是狗:狗 Dog = new Dog();

我们也可以说狗是动物:动物 animal = new 狗();

这里狗在不同的时刻表现出来了不同的形态,这就是多态

2.多态的前提和体现

有继承/实现关系

有方法重写

有父类引用指向子类

public class Animal {
    public void eat(){
        System.out.println("动物吃东西");
    }
}
public class Dog extends Animal{
    //方法重写
    @Override
    public void eat() {
        System.out.println("狗吃东西");
    }
}
public class Demo {
    public static void main(String[] args) {
        //有父类指向子类对象
        Animal a = new Dog();

    }
}

       这里我们定义了一个Animal类,一个Dog类,还有一个测试类,Dog类继承了Animal类并对其eat()方法进行重写,在测试类中有父类指向子类对象,这里就体现了多态

3.多态中成员的访问特点

成员变量:编译看左边,执行看左边

成员方法:编译看左边,执行看右边

因为成员方法有重写,而成员变量无重写,所以成员变量和成员方法的访问不一样

4.多态的好处和弊端

好处:提高了程序的扩展性

具体体现:定义方法的时候,使用父类作为参数,将来在使用的时候,使用具体的子类型参与操作

弊端:不能使用子类的特有功能

5.多态的转型

向上转型:从子到父,父类引用指向子类对象

向下转型:从父到子,父类引用转为子类对象

public class Animal {
    public void eat(){
        System.out.println("动物吃东西");
    }
}
public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}
public class AnimalDemo {
    public static void main(String[] args) {
        //父类引用指向子类对象,向上转型
        Animal a =new Cat();
        a.eat();

    }
}

       这里我们定义了一个动物类,一个猫类继承动物类,还有一个测试类,我们先用向上转型创建一个对象,然后调用eat()方法。

      可以看到输出了重写后的eat()方法,是因为成员方法在访问时看的s是右边,也就是Cat类

      当我们调用Cat类中catchMouse方法时,编译器报错

      如果想使用Cat类中的特有方法就要使用向下转型

//向下转型
        Cat c =(Cat)a;

      这时我们再调用Cat中的catchMouse方法就可以使用了

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344805.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号