java网课|接口

P171 接口概念

**是一种【公共的规范标准】 **
只要符号标准,就可以【大家通用】

==》为我们带来了便利性

P172 接口的定义基本格式

是多个类的公共规范
一种引用数据类型,最重要的内容是:抽象方法

如何定义呢?

public interface 接口名称{
	//接口内容
}

ps:class换成interface之后,编译生成的字节码文件仍然是.java—>.class

接口中可以包含什么内容呢?
Java7:

  • 常量
  • 抽象方法
    java8:
  • 以上
  • 默认方法
  • 静态方法
    java9:
  • 以上
  • 私有方法

P173 接口的抽象方法定义

在任何版本的java中,接口都能定义抽象方法

格式:

public abstract 返回值类型 方法名称(参数列表);

必须是public abstract(不能private等等
可以省略某个修饰词
在这里插入图片描述
抽象方法都是分号结束,别写大括号内方法体!

P174 接口使用的步骤

1、接口不能直接使用,必须有一个“实现类”来“实现”该接口

public class 实现类名称 implements 接口名称{
	}

2、接口的实现类必须【覆盖重写】(实现)接口中【所有的抽象方法】
how to:

  • 去掉abstract,大括号内直接写!

3、创建实现类的对象,进行使用

在这里插入图片描述

  • demo01包下有:
  •  	MyInterfaceAbstract接口==》不能直接用接口类new对象
    
  •  	MyInterfaceAbstractlmpl接口实现类==》只有它能new对象使用
    
  •  	Demo01Interface创建对象实现类
    

P175 接口的默认方法定义

public default 返回值类型 方法名称(参数列表){ //默认方法一定是public
方法体
}

在接口类中想新添加一个抽象方法,而实现类中不想写实现时:
==》新添加default方法

P176 如何使用默认方法

public default void methodDefault(){//这里public可以省略,default不能
…方法体
}

实现类可以直接调用接口类中的默认方法
也可以覆盖重写接口的默认方法

P177 接口的静态方法定义

是啥?

该方法和对象是谁无关,只与这个类有关==》【属于类,而不是对象即静态】

怎么写?
public static 返回值类型 接口名称{
方法体
}

P178 怎么使用

接口的静态方法犹如类的静态方法
不能用【实现类对象】调用static方法
必须是【接口名称.static方法】

 public static void main(String[] args) {
        MyInterfaceStaticImpl impl=new MyInterfaceStaticImpl();

        //不能通过接口实现类的对象来调用接口当中的静态方法
        //impl.staticmethod();//×,不能调用??!!

        //通过接口名称直接调用static方法
        MyInterfaceStatic.staticmethod();//成功了
    }

P179 接口的私有方法定义

什么情况?

  • 在接口中想要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题
  • 但是又不想让实现类能用这个共有方法

私有private方法:

  • 普通私有方法,解决多个默认方法之间重复代码问题
private 返回值类型 方法名称(参数列表){
	方法体
	}
  • 静态私有方法,解决多个静态方法之间重复代码问题
private static 返回值类型 方法名称(参数列表){
	方法体
	}

P180 接口的私有方法使用

从java9开始的特性
解决多个静态方法之间重复代码问题

说人话就是:不想让实现类使用这个方法,但是接口中其他方法想用到这个方法

P181 接口的常量定义和使用

接口中也可以定义“成员变量”
但是必须用 public static final挂在前面修饰

可以理解为接口的【常量】

public interface MyInterfaceConst {
    //这是接口的一个常量,一旦赋值,不可修改
    public static final int num=10;//(三个词也可以省略,但最好不要
}

解读一下几个关键字:

  • public:都可以用的意思
  • static:和对象无关的意思
  • final:不可修改的意思~

final一旦写上,不可修改其值

接口中的常量,【必须赋值】!!!不能不赋值

推荐命名:常量全用大写!

	public static final int NUM_OF_MY_CLASS=10;//推荐命名方法

P182 接口的内容小结

1、成员变量=常量

  • 记得前面三个修饰词:public static final,虽然不写也行
  •  ps:必须赋值/不能改变/完全大写/下划线分割
    

2、抽象方法

  • public abstract 返回值类型 名称(参数列表);
  •  实现类【必须】覆盖重写接口所有的抽象方法【抽象类除外】
    

3、java 8开始,接口可以定义【默认方法】了~!

  • public default 返回值 方法名称(){【方法体】}
  •  默认方法也【可以】被覆盖重写
    

4、java 8开始,接口可以定义【静态方法】了~!

  • public static 返回值 xxx(){【方法体】}

5、java 9开始,接口可以定义【私有方法】~!

  • 【普通私有方法】:private 返回值 xxx(){}
  • 【静态私有方法】:private static 返回值 xxx(){}
  •  ==private方法只有【接口自己】才能调用,不能被实现类/别人使用==
    

接口的使用注意事项

1、不能有静态代码块/构造方法

在这里插入图片描述

2、一个类只有一个爸爸,但是可以有多个接口

public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB{//这是一个实现类
	//覆盖重写【所有抽象方法】(两个接口中的都要写)
}

逗号分开就完事了

ps:如果两个接口中有同样的抽象方法(名字各种都一样),只用重写一次
如果两个接口中有同样的默认方法(名字一样),但是方法体不一样(冲突了)实现类要进行覆盖重写

3、爸爸和接口的默认方法冲突?爸爸优先!

public class Zi extends Fu implements MyInterface{//爸爸和接口
	
}

** 看!!!又继承爸爸又继承接口,这么写!!!不用打逗号嗷!!┗|`O′|┛ ~~**

P184 接口之间的多继承

前情提要:

  • 类与类:单继承
  • 类与接口:多实现–》一个类可以实现多个接口
  • 接口与接口:多继承
public interface MyInterface extends MyInterfaceA,MyInterfaceB{
	public abstract void methodB();

}

若:A有2个,B有2个,其中1个是一样的,子接口C有一个==》C一共有4个!

注意事项

多个父接口的抽象方法不存在冲突的问题(∵无方法体

多个父接口的默认方法若冲突==》子接口自己重写呗!(带着default关键字)

注意:子接口重写的时候为什么还要写default?
∵重写了,相当于重新整个默认方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值