接口
1.1接口定义
java中的接口是若干个完成某一特定功能的没有方法体的方法和常量的集合。在java中定义的方法可以在不同的地方实现,可以具有完全不同的行为。 接口定义和类定义类似,嫂家妈中午要调用一个接口,需要使interface关键字。
1.1.1代码
public class 类名{}
.java ->.class
public interface 接口名称{接口内容}
.java ->.class
1.1.2接口内容
Java7
1.常量
2.抽象方法
Java8
1.常量
2.抽象方法
3.默认方法
4.静态方法
Java9
1.常量
2.抽象方法
3.默认方法
4.静态方法
5.私有方法任何
Java版本中接口都是抽象方法。
public abstract 返回值类型 方法名称(参数列表)。
1.2使用接口注意事项
⑴java接口不能被实例化
⑵java接口中申明的成员自动被设置为public,因此,java不能申明私有成员
⑶java中接口不能出现方法体
⑷接口可以通过使用关键字extends继承其他接口
1.3接口的实现和使用
①一旦接口被定义一个或多个类便可以实现该接口,当一个类实现一个接口时,要在类的定义中包括implements子句,然后实现接口所定义的全部方法。
②实现接口时需要注意一个类,实现一个接口时必须实现接口中定义的方法,否则该类必须声明为抽象类。
代码及程序运行结果
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;
public interface MyInterface {
public abstract void methodA();
abstract void methodB();
public void methodC();
void methodD();
}
package com.hg.demo01;
public class Demo01Interface {
public static void main(String[] args) {
MyInterfaceImpl impl=new MyInterfaceImpl();
impl.methodA();
impl.methodB();
impl.methodC();
impl.methodD();
}
}
package com.hg.demo02;
public class MyInterfaceDefaultB implements MyInterfaceDefault{
@Override
public void usb2() {
System.out.println("我是移动硬盘的USB2.0");
}
}
package com.hg.demo02;
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void usb2() {
System.out.println("我是笔记本电脑的USB2.0");
}
}
package com.hg.demo02;
public interface MyInterfaceDefault {
public abstract void usb2();
public default void usb3(){
System.out.println("这是USB3.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("========");
MyInterfaceDefaultA implb=new MyInterfaceDefaultA();
implb.usb2();
implb.usb3();
}
}