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

Java中多态数组的介绍(继承、接口)

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

Java中多态数组的介绍(继承、接口)

看了很多文章,但是都没有怎么讲多态数组,现在我来通过简单地代码和例子来讲解一下多态数组。
1.多态数组是java中面向对象一个很重要的东西,多态数组的使用,是基于继承和接口部分的内容来实现的,能够方便我们取到不同子类中的各个参数和方法。
2.先以接口为例大家看下代码

这是一个接口
public interface Usb {
     void work();
}
这是一个相机类,它实现了接口,并且必须实现Usb接口中的方法
public class Camera implements Usb{
    @Override
    public void work() {
        System.out.println("相机工作中");
    }
}
这是一个手机类,它也实现了接口,并且必须实现Usb接口中的方法,另外,他还有自己特有的方法:call()
public class MyPhone implements Usb{
    public void call(){
        System.out.println("手机可以打电话");
    }

    @Override
    public void work() {
        System.out.println("手机工作中");
    }
}
这里是一个测试类,这里的代码中体现了多态数组的灵活性和简便性
public class Test {
    public static void main(String[] args) {
        //这里不管是继承还是接口的多态数组,都是先把父类或者接口拿来创建一个数组,然后创建一个父类对象指向子类的实例,
        //分别放入数组中,例如数组就像父亲的房子,可以把父亲自己放进去,也可以把他的子女也放进去住,接口也是一样
        Usb[] usbs= new Usb[2];
        usbs[0] = new Camera();
        usbs[1] = new MyPhone();
        for (int i = 0; i < usbs.length; i++) {
            //这里想调用camera和myphone实现接口中的方法
            usbs[i].work();//动态绑定

            //这里本来是想调用myphone中特有的方法,所以要通过instanceof,判断一下遍历的运行类型中是否为myphone,
            //如果是,则调用myphone中特有的方法,举个例子:你爸想把你叫来分家产,只想把所有家产分给你,不分给其他人,
            //首先就得判断你是否是他要找的那个儿子,找的依据是根据你的名字来找,如果是你,则把家产分给你,就是调用这里的myphone中,
            //特有的call()方法
            if (usbs[i] instanceof MyPhone){
                ((MyPhone) usbs[i]).call();
            }
        }
    }
}

大家一定要仔细看我图中注释的文字,已经写得非常非常透彻了,我举了一个住房子的例子帮助大家理解什么是多态数组,另外,这里还特意补充了instanceof方法,来判断是否在数组中取到的类型是我想要的类型(MyPhone),如果是,则向下转型,调用子类中特有的方法call()方法。

大家一定一定仔细看我代码中注释的文字,对于什么是多态数组已经说得非常非常通俗易懂了,仔细看看代码和注释,大家一定会对多态数组有一个更加深刻的认知。

对于继承也是一样的,也是通过父类创建一个数组(就相当于我注释中写到的房子一样),然后通过上转型,把子类的放进去,就比如

		Person[] person = new Person[5];
        person[0] = new Person("爸爸",21);
        person[1] = new Student("张三",18,88);
        person[2] = new Student("李四",18,92);
        person[3] = new Teacher("关羽" , 22,29000);
        person[4] = new Teacher("赵云" , 21,31231);

代码中的Student和Teacher类都是Person类的子类,如果需要调用子类中特有的方法,还是和上面的方法一样,用instanceof来进行类型判断。

我相信仔细看完思考完应该是很清楚了,如果对于我的解答感觉有新的领悟,请宝贝们给我个点赞关注加收藏。orz

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

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

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