Java面向对象之接口

1、什么是接口

接口是一种规则,描述了一个行为。

举个例子:

                动物

青蛙        狗        兔子

他们三个动物都会吃饭喝水,但是青蛙和狗会游泳,兔子不会游泳。

难道我们在动物里面就放弃写游泳这个行为,让青蛙和狗都创建独立方法吗?

这显然是不合理的。

所以我们可以抽取将行为作为抽象方法抽取出来,放在接口中,谁需要就去调用接口。

举个不恰当的例子:

每一个对象都是修仙者,类是自身已经参悟的大道,方法是已经掌握的法则,属性是自身的修为。

方法的重写是对自身掌握的法则的扩展。

接口是那些游离在世间等待修仙者吸纳的法则。

2、接口的定义和使用

接口用关键字interface来定义

public interface 接口名{}

接口不能实例化(接口不能创建对象) 

注意1:接口和类之间是实现关系,通过implements关键字表示。

public class 类名 implements 接口名{}

注意2:实现类还可以在继承一个类的同时实现多个接口。

public class 类名 extends 父类 implements 接口名1,接口名2{}

注意3:实现类后需要重写所有抽象方法或者定义抽象类

3、接口中成员的特点

成员变量

        只能是常量

        默认修饰符:public static final

        这是因为,public权限足够大别的包也可以访问,static可以用类名调用简单快捷,final作为一个规则我们不想让别人修改他,所以设置final。

构造方法

        没有

        接口不可以创建对象。

        接口也不需要外界赋值。

成员方法

        只能是抽象方法

        默认修饰符:public abstratc(建议新手手动写上)

jdk7以前:接口中只能定义抽象方法。

jdk8:

为了解决接口功能升级时,所有实现接口的类都需要重写的麻烦,jdk8引入了默认方法,需要用default 关键字修饰

格式:

public default void show(){  }

注意事项:

默认方法不是抽象方法,所以不被强制重写,但是你仍然可以重写他,在重写时必须去掉default

默认方法在定义时public可以省略,default不可以省略。

如果实现了多个接口,且接口里有重名的默认方法,必须对默认方法进行重写。(否则你就不知道调用哪个方法了对吧)

jdk8允许接口中定义静态方法,用static关键字修饰。

格式:

public static void show(){  }

注意事项:

静态方法只能通过接口名调用,不可以用对象或者类名调用。

jdk9:

在默认方法和静态方法中有时会有大量重复的代码,我们想要一种私有的方法被默认和静态方法调用,并且不对外服务。jdk9中新增了接口中的私有方法。

格式1:普通的私有方法--->只能服务默认方法

private void show(){  }

格式2:静态的私有方法--->只能服务静态方法

private static void show(){  }

4、接口和类之间的关系

类和类的关系

        继承关系,只能单继承不能多继承,但是可以多层继承。

类和接口的关系

        实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。

注意:多继承时需要重写所有的抽象方法。如果不同接口中有重名抽象方法,重写一次即可。

接口和接口的关系

        ​​​​​​​继承关系,可以单继承,也可以多继承。

5、总结

1、接口代表了规则,是行为的抽象。想让类拥有哪个行为,让这个类实现对应的接口就可以了。

2、当一个方法的参数是接口时,可以传递接口所有实现类的对象,这样的方式称之为接口多态。

相当于接口创建了抽象方法。在类中实现了接口,重写方法。在test类中创建方法并调用时可以把参数类型设置为接口,这样调用时可以用所有的实现了接口的类创建的对象调用。

public static void method(Swim s){
        s.swimming();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值