Java学习
day12
目录
- 接口
1.1、接口的定义
Java中的接口是若干个完成某一特定功能的没有方法体的方法和常量的集合。在Java接口中定义的方法可以在不同的地方被实现,可以具有完全不同的行为。
接口定义和类定义类似,在Java中要定义一个接口,需要使用 interface关键字 接口中可以声明一些方法和常量。
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。
Java中的接口更多的体现在对行为的抽象!
生活中接口的举例:
在使用接口时需注意以下几点:
- Java接口不能被实例化
- Java接口中声明的成员自动被设置为public。因此Java接口不能声明私有成员
- Java接口中不能出现方法体
- 接口可以通过使用关键字extends承接其他接口。
1.2、接口的特点
- 接口用关键字interface修饰
public interface接口名{} - 类实现接口用implements表示
publicclass类名implements接口名{} - 接口不能实例化
接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。
多态的形式:具体类多态,抽象类多态,接口多态。 - 接口的子类
要么重写接口中的所有抽象方法
要么子类也是抽象类
1.3、接口的成员特点
成员特点 - 成员变量
只能是常量默认修饰符:publicstaticfinal - 构造方法
没有,因为接口主要是扩展功能的,而没有具体存在 - 成员方法
只能是抽象方法默认修饰符:publicabstract
关于接口中的方法,JDK8和JDK9中有一些新特性,后面再讲解代码演示接口
1.4、接口的实现和使用
一旦接口被定义,一个或多个类便可以实现该接口。当一个类实现一个接口时,要在该类的定义中包含implements子句,然后实现接口所定义的全部方法。
实现接口时需要注意,当一个类实现一个接口时,必须实现接口中定义的方法,否则该类必须声明为抽象类。
举例
例一:
①
package com.hg.demo01;
//定义
/*
-
在任何java版本中,接口都是抽象的
-
public abstract 返回值类型 方法名称 (参数列表);
-
!!注意事项!!
1.抽象方法 修饰字必须是public interface
2.关键字可以省略
*/
public interface MyInterface {
public abstract void methodA();
abstract void methodB();
public void methodC();
void methodD();
}
②
package com.hg.demo01;
//实现
public class MyInterfaceImpl implements MyInterface {@Override
public void methodA() {
System.out.println(“实现抽象方法A”);
}@Override
public void methodB() {
System.out.println(“实现抽象方法B”);
}
@Override
public void methodC() {
System.out.println(“实现抽象方法C”);
}@Override
public void methodD() {
System.out.println(“实现抽象方法D”);
}
}
③
package com.hg.demo01;
//使用
/*
- 1、如何定义一个接口
public class 类名
{
}
.java ->class
public interface 接口名称
接口内容
.java ->class
- 2、接口内容
java7
1.常量
2.抽象方法
java8
3.默认方法(4.8)
4.静态方法
java9
5.私有方法
- 3、使用接口的步骤
1.定义一个接口
2.实现一个接口,并且重写里面所有的抽象方法
3.创建一个类 - */
public class Demo01Interface {
public static void main(String[] args){
//错误写法 不能直接对接口进行new实例化
//MyInterface myinterface = new MyInterface();
MyInterfaceImpl impl = new MyInterfaceImpl();
impl.methodA();
impl.methodB();
impl.methodC();
impl.methodD();
}
}
例二:
①定义一个借口
package com.hg.demo02;
public interface MyInterfaceDefault {
public abstract void usb2();
//将usb2.0 升级到 usb3.0
public default void usb3() {
System.out.println(“这是usb3.0新增的功能”);
}
}
②
package com.hg.demo02;
public class MyInterfaceDefaultA implements MyInterfaceDefault {
@Override
public void usb2() {
System.out.println("我是笔记本电脑的USB2.0版本!");
}
}
③
package com.hg.demo02;
public class MyInterfaceDefaultB implements MyInterfaceDefault {
@Override
public void usb2() {
System.out.println("我是移动硬盘的USB2.0版本!");
}
}
④
package com.hg.demo02;
public class Demo02Interface {
public static void main (String[] args) {
MyInterfaceDefaultA impla = new MyInterfaceDefaultA();
impla.usb2();
impla.usb3();
System.out.println("============");
MyInterfaceDefaultB implb = new MyInterfaceDefaultB();
implb.usb2();
implb.usb3();
}
}
运行结果:
tip:2020080605006