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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存