面向对象--接口

本文详细介绍了Java接口的概念,包括定义、使用规则、成员特点,以及JDK8后引入的默认方法和静态方法。重点讲解了接口与类、接口与接口之间的关系,以及适配器设计模式在处理接口冲突中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.接口:就是一种规则;

2.接口的定义和使用:

a.接口用关键字interface来定义

public interface 接口名{}

b.接口不能实例化

c.接口和类之间是实现关系,通过implements关键字表示

public class 类名 implements 接口名{}

d.接口的子类(实现类)

要么重写接口中的所有抽象方法

要么是抽象类

e.注意1:接口和类的实现关系,可以单实现,也可以多实现.

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

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

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

public class Dog extends Animal implements Util{
    public Dog(){};
    public Dog(String name ,int age){
        super(name,age);
    }
    public void eat(){
        System.out.println("狗吃骨头");
    }
    public void swim(){
        System.out.println("狗刨");
    }
}

3.接口中成员的特点:

a.成员变量:只能是常量,默认修饰符: public static final(建议书写)

b.构造方法:没有

c.成员方法:只能是抽象方法,默认修饰符:public abstract(建议书写)

d.JDK7以前:接口中只能定义抽象方法

e.JDK8的新特性:接口中可以定义有方法体的方法

f.JDK9的新特性:接口中可以定义私有方法.

4.接口和类之间的关系:

a.类和类的关系:

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

b.类和接口的关系:

实现关系:可以单实现,也可以多实现,还可以再继承一个类的同时实现多个接口(需要实现所有的方法)

细节:当多个接口中有重名的方法时,只需要重写一次就行

c.接口和接口的关系:

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

细节:如果实现类实现了最下面的子类接口,那么就需要重写所有的抽象方法(父类的方法)

public interface Interf1 {
    public abstract void method1();
    public abstract void method2();
}
public interface Interf2 extends Interf1{
    public abstract void method1();
}
public class Interf3 implements Interf2{
    //方法1只重写了一次
    @Override
    public void method1() {
        System.out.println("method1");
    }

    @Override
    public void method2() {
        System.out.println("method2");
    }
//实现类重写了全部的方法
}

5.JDK8以后接口中可以定义有方法体的方法1:默认方法:

a.允许接口中定义默认方法,需要使用关键字default修饰(作用:解决接口升级的问题)

b.接口中默认方法的定义格式:public default 返回值类型 方法名(参数列表) {}

public default void show(){}

6.接口中默认方法的注意事项:

a.默认方法不是抽象方法,所以不强制重写,但是如果被重写,重写的时候去掉default关键字

b.public可以省略,default不能省略

c.如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对方法进行重写

7.JDK8以后接口中可以定义有方法体的方法2:静态方法

a.允许接口中定义静态方法,需要用static修饰

b,接口中静态方法的定义格式:public static 返回值类型 方法名(参数列表){}

public static void show(){}

8.接口中静态方法的注意事项:

a.静态方法只能通过接口名调用,不能通过实现类名或则对象名调用

b.public可以省略,static不能省略

9.JDK9的新特性:接口中可以定义私有方法:

a.格式1:private 返回值类型 方法名(参数列表){}     

给默认方法服务

private void show(){}

b.格式2:private static 返回值类型 方法名(参数列表){}   

 给静态方法服务

private static void show(){}

10.接口的应用:

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

b.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称为接口多态

11.适配器设计模式:

a.设计模式是一套被反复使用,多数人晓得,经过分类编目的,代码设计经验的总结.当使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性,程序的重用性.

简单理解:设计模式就是各种套路

b.适配器设计模式:解决接口与接口实现类之间的矛盾问题

c.当一个接口抽象方法过多,但是我只要使用其中一部分的时候,就可以用适配器设计模式

d.书写步骤:

编写中间类XXX(XXX代表方法名)Adapter,实现对应的接口,对接口中的抽象方法进行空实现,让真正的实现类继承中间类,并重写需要的方法,为了避免其他类创建适配器类的对象,中间的适配器类用abstract进行修饰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天酉小友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值