为什么要用多态把接口实例化?以及实例化过程.

1 篇文章 0 订阅
1 篇文章 0 订阅

接口中没有构造方法,那么为什么要通过多态的形式把接口实例化呢?实例化的过程是如何的呢?

以下内容为个人理解,如有不妥,请评论探讨.
把接口通过多态实例化是为了规避接口中一些我们没有的方法,比如跳高接口中,有跳高的抽象方法,在实现跳高接口的狗类中,我们需要重写接口中的所有方法,但是在实现类(狗类)中还有接口中没有的方法,(比如看家 ,吃饭等方法)

//跳高的接口
public interface Jump {
    public abstract void jump();
//    public abstract  void run();
}

//实现类
public class Dog extends Animal implements Jump{
    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("狗恰肉");
    }

    @Override
    public void jump() {
        System.out.println("狗学会了跳高");
    }
}

在创建跳高接口引用指向狗类对象的过程中,实际上创建的还是狗对象,这也就解释了接口中没有构造方法为什么还能被实例化,把创建的狗类对象伪装成接口类的对象,在调用实现类(狗类)中的方法的时候,如果接口中没有该方法,那么该方法就不能使用(多态的特征)

//测试类
public class Test {
    public static void main(String[] args) {
    Jump j = new Dog();
    j.jump();

    }
}

也就是说,接口的多态,可以理解成一种规范,多态产生的对象只能使用重写的接口中的方法(当然在实际的开发中可能用到的不多);

ps:
使用接口可以理解成对类中功能的一些拓展,比如狗类中,跳高这个功能不是所有狗都会的,只有实现了该接口才会有这个功能,(通俗的说就是学会了跳高的狗)

抽象可以理解为一些共性的功能,比如动物类,所有动物都会吃,所以吃可以定为一种抽象方法,动物类为抽象类,当狗类或者其他动物继承了这个类,就会重写一些共有功能的抽象的方法,比如狗吃狗粮等.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值