首页 > 其他分享 >学习记录20接口

学习记录20接口

时间:2022-10-22 12:13:19浏览次数:57  
标签:20 记录 继承 子类 接口 实现 方法 public

接口

为什么会有接口呢?

问题的产生:上一篇学了抽象类,我们应该知道,抽象类存在的必要性,但有的时候,个别的子类中的方法不太适合提取成为共性方法,我们就会考虑在这个子类中写其独有的的方法,但这个独有的方法又不是一个类中独有的,而是好几个。那么就会出现上次提到的方法独写出现的弊端,就是方法的格式(返回值、方法名)不确定。总的来说就是一些方法不是所有类的共性,但又不是单独一个类的方法,通配无法满足,独写又出现问题,所以产生了接口(interface)来解决这个问题。就是在接口中书写适用于部分类的方法,这些类通过与接口发生关系来使独特的方法得以实现,并且,在接口内对方法的格式进行了规范。当需要给多个类但又不是全部类定义规则时,我们就使用接口
学到这里,我们对真正的方法独写有一个更细的认识,只有当某个行为,只在某一个类当中存在时,我们再把这个行为读写进这个类中
接口的应用:
1.首先是解决了上述的问题
2.接口中写的方法,只要与类发生关系,那么这个类的对象就可以使用这个方法。(这不像父类中写的方法只能被继承了的子类使用,其他父类的子类也能使用)接口是对行为的抽象,这是明显区别于抽象类的

如何定义一个接口

接口的定义和使用

  • 接口用关键字interface来定义
    public interface 接口名{}
  • 接口不能实例化(说白了就是不能创建对象)
  • 接口和类之间是实现关系,通过implements关键字表示,格式:
    public class 类名 implements 接口名 {}
  • 接口的子类(实现类,这里所指的子类(实现类),就是需要调用这个方法的类
    在实现类当中,要么重写所有抽象方法;要么把类定义为一个抽象类(这与抽象类有些相似)

    **注意1:
  • 接口和类的实现关系,可以单实线,也可以多实现,如:
    public class 类名 implements 接口名1,接口名2{}**

**注意2:

  • 实现类还可以在继承一个类的同时实现多个接口,如:
    public class 类名 extends 父类 implements 接口名1,接口名2{}**

如何使用一个接口

接口里面成员的特点

成员变量

  • 只能是常量
    默认修饰符:public static final
    接口是一种只是规则,多个类的共有属性是不会提取到接口中的而是在父类当中,所以基于这种特点,接口中的属性一般定义为常量。static的目的是为了方便常量被调用(接口名.常量名,即可调用)。public的目的是表示公共的,在任何地方都可以调用。
    报错:

构造方法

没有。前面说了接口的作用,并且接口不能创建对象,所以用不着给对象的属性初始化,所以没有构造方法

成员方法

默认public abstract修饰
jdk7以前,只能有抽象方法;之后,接口中可以定义私有方法。
写了括号后报错

没有重写接口方法,报错

接口和类之间的关系

类和类之间的关系

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

类和接口之间的关系

**实现关系,可以单实现,也可以多实现,还可以在继承一个父类的同时实现多个接口(注意:对接接口,要将所有的抽象方法重写
而如果多个接口中有相同的抽象方法那该如何解决呢?
**
这个情况是:两个接口,但方法没有相重的

这个情况是有想重的

根据idea提示,可以看出,我们只需要将重复的方法重写一次就可以了;而且,如果我们多写了,还会报错(用于在同一个类对接多个接口的情况当中)

接口和接口之间的关系

继承关系,可以单继承,也可以多继承(注意:如果实现类对接的是子类接口的话,那么实现类就要将该接口以上所有的抽象方法重写

根据上面的图片,可以看出,Inter5中只有一个方法,但由于继承关系,它就继承了Inter3中的方法,在测试类中idea提示要对方法进行重,并且是所有的抽象方法
但如果只是继承到接口4,那么接口5中的方法就不重写了,多写了就报错

标签:20,记录,继承,子类,接口,实现,方法,public
From: https://www.cnblogs.com/hezhipeng/p/16814508.html

相关文章