初次接触接口

接口

Java的接口就好像是100%的纯抽象类

所有接口的方法都是抽象的,所以任何Pet的类都必须要实现这些方法

image-20211219160022068

接口的定义:

public interface Pet{...} // 使用interface代替class

接口的实现:

public class Dog extends Canine implements Pet{...}

使用implements这个关键词.注意到实现interface时还是必须再某个类的继承之下

设计接口与实现

接口方法带有public和abstract的意义,这两个修饰符是属于选择性的(这里打出来是为了强调才打出来,实际上不需要)

public interface Pet {
   	// 接口方法一定是抽象,所以必须以分号结束.记住他们没有内容
    public abstract void beFriendly();
    public abstract void play();
}

public class Dog extends Canine implements Pet {
    // 必须在这里实现出Pet的方法,这是合约的规定
    public void beFriendly() {...}
    public void play() {...}
    
    // 一般的覆盖方法
    public void roam() {...}
    public void eat() {...}
}

类可以实现多个接口

通过继承结构,Dog对象IS-A Canine, IS-A Animal, IS-A Object.但是Dog IS-A Pet是通过接口实现的机制达成的,并同时也能够实现其他的接口:

public class Dog extends Animal implements Pet, Saveable,paintable { }

extend只能有一个,implement可以有多个

要如何判断应该是设计类,子类,抽象类或者接口??

  • 如果新的类无法对其他的类通过IS-A测试时,就设计不继承其他类的类
  • 只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类
  • 当你需要定义一群子类的模板,又不想让程序员初始化此模板时,设计出抽象的类给他们用
    或增加新的方法来继承现有的类
  • 当你需要定义一群子类的模板,又不想让程序员初始化此模板时,设计出抽象的类给他们用
  • 如果想要定义出类可以扮演的角色,使用接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值