第11天(接口,默认方式default,静态方式static,私有方式private)

目录

接口

接口介绍

接口存在的两个重要意义

接口的定义和特点

接口中成员的特点

JDK8版本后接口成员的特点

接口中默认方式的定义格式

接口中静态方法的定义格式

JDK9版中接口成员的特点

接口的使用思路

类和接口的关系


接口

使用数组容器的弊端:
1.容器长度是固定的,不能根据添加功能自动增长。
2.没有提供用于增删改查的方法。

接口介绍

当一个类中的所有方法都是抽象方法的时候,我们可以将其定义为一个接口。 接口也是一种引用数据类型,它比抽象类还要抽象。

接口存在的两个重要意义

1.规则的定义
2.程序的扩展

接口的定义和特点

接口关键字interface来定义
public interface 接口名{}

接口不能实例化
接口和类之间是实现关系,通过implements关键字表示
        public class 类名 implements 接口名{}
接口的子类(实现类)
        要么重写接口中的所有抽象方法
        要么是抽象类
注意:接口和类的实现可以是单实现,也可以是多实现
        public class 类名 implements 接口名1, 接口名2{}

public interface InterA {
    public abstract void a();
    public abstract void b();
}
//定义接口
public interface Inter {
    public abstract void stady();//构造抽象方法
}
//接口实现类
public class InterImpl implements Inter,InterA {    
    @Override
    public void stady() {//重写方法
        System.out.println("我是实现类中stady方法");
    }
    @Override
    public void a() {
    }
    @Override
    public void b() {
    }
}
//测试类
public static void main(String[] args) {
        InterImpl inter=new InterImpl();//创建对象
        inter.stady();//调用stady方法
    }

接口中成员的特点

成员变量:只能是常量 系统会默认加入三个关键字 public static final 构造方法:没有

成员方法:只能是抽象方法 默认修饰符:public abstract

JDK8版本后接口成员的特点

允许在接口中定义非抽象方法,但是需要使用关键字 default修饰,这些方法就是默认方法。 作用:解决接口升级问题

接口中默认方式的定义格式

格式:public default 返回值类型 方法名 (参数列表){} 范例:public default void show(){方法内容};

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

1.默认方法不是抽象方法,所以不被强制重写,但是可以被重写,重写的时候去掉default关键字。 2.public可以省略,default不可以省略。 3.如果实现了多个接口,多个接口存在相同的方法声明,子类就必须对该方法进行重写。

public interface InterB {//定义接口B
    public default void show(){
        System.out.println("interA show");
    }
public class TestInterface {
    public static void main(String[] args) {
    InterAImpl ib = new InterAImpl();
    ib.show();
    }
}
class InterAImpl implements InterA,InterB{
}

接口中静态方法的定义格式

接口中允许定义静态static静态方法 接口中静态方法的定义格式: 格式:public static 返回值类型 方法名(参数列表){} 范例:public static void show(){};

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

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

  2. public可以省略不写,static不能省略。

public interface InterA {
    public static void show(){
        System.out.println("interA show");
    }
}
public class TestInterface {
    public static void main(String[] args) {
    InterA.show();
    }
}
class InterAImpl implements InterA,InterB{
}

JDK9版中接口成员的特点

接口中私有方式的定义格式:

格式1:private 返回值类型 方法名 (参数列表){}
范例1:private void show(){};

格式2:private static 返回值类型 方法名(参数列表){}
范例2:private static void method(){};

接口的使用思路

1.如果发现 一个类中所有的方法都是抽象方法,那么就可以将该类,改进为一个接口
2.涉及到了接口大面积更新发方法,而不像去修改每一个实现类,就可以将更新的方法,定义为带有方法体的默认方法。
3.希望默认方法调用的更加简洁,可以考虑设计为static静态方法。(需要去掉default关键字)
4.默认方法中出现了重复代码,可以考虑吧抽取处一个私有方法。

类和接口的关系

类和类的关系
        继承关系,只能单继承,但是可以多层继承。
类和接口的关系
        实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口和接口的关系
        继承关系,可以 单继承,也可以多继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值