Java基础(十四)——面向对象下 (接口interface的使用)

接口与类是一种并列的关系,接口可以理解为一种特殊的类,接口中全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。

举个栗子:在这里插入图片描述
下面4个实例除了具有一些自己特有的属性(如老鹰:颜色,年龄等,战斗机:型号,大小等),它们还有一些共有的特性,在只涉及到继承知识点时,“飞”作为下面4个实例的“共性”,最好就是将飞设为一个父类或是抽象类,实例类中重写父类中的“飞”方法,从而实现“飞”;
然而,继承是单一继承的,现在,老鹰这一类的实例,不仅具有“飞”的行为,还具有“攻击”这一行为,使用继承是肯定不可以实现这个要求的,因此就可以用接口来实现;
将“飞”和“攻击”写为两个接口,接口是可以多实现的,就可以实现上面的要求。

jdk1.7之前接口中只能定义全局常量和抽象方法(本篇文章以此为准)
jdk1.8后,除了定义7中的,还有了一些新的特性,还可以定义静态方法和默认方法(default)了

package com.stx.sn.myinterface.demo1;
// 创建了一个飞的接口
public interface Fly {
    public abstract void fly();
}

package com.stx.sn.myinterface.demo1;
// 创建了一个攻击的接口
public interface Attack {
    public abstract void attack();
}

package com.stx.sn.myinterface.demo1;
// 创建一个飞机实例实现上面两个接口
public class Plane implements Fly,Attack {

    private String model;

    public Plane(String model) {
        this.model = model;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    @Override
    public void attack() {
        System.out.println("飞机--攻击");
    }

    @Override
    public void fly() {
        System.out.println("飞机--飞");
    }
}

在这里插入图片描述

接口中是抽象方法,所以需要重写接口中的方法;
如果一个类去实现接口,若实现了接口中的所有抽象方法,则这个类才可以实例化,否则这个类也必须是一个抽象类

为什么继承只能是单继承,而接口可以多实现?

public class Father {
    public void money(){
        System.out.println("Father--money");
    }
}
public class Mother {
    public void money(){
        System.out.println("Mother--money");
    }
}

这里创建了两个类,一个Father类,一个Mother类,下面再创建一个Son类去同时继承这两个类
在这里插入图片描述
编译直接报错,这就说明了不可以多继承,若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用会含糊不清,不知道调用哪一个,因此就报错了。
而接口中,定义的方法是抽象方法,抽象方法必须被重写,就不存在不知道调用哪个的问题,因此可以多实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值