接口
今天学习的是接口,生活中接口的例子随处可见上面有一个锁,可以方便我们理解:
1.接口的定义
java中的接口是若干个完成某一特定功能的,没有方法体的方法和常量的集合。在java接口中定义的方法可以在不同的地方被实现,可以具有完全不同的行为。
接口定义和内定义类似,在java中要定义一个接口,需要使用int er face关键字,接口中可以声明一些方法和常量。
下面的代码是两个接口定义的例子:
public interface First interface{
public void outPut(int param);
}
//定义程序使用的常量接口
public interface My constants{
}
1.如何定义一个接口
*
- public class 类名
- {
- }
- .java -> .class
- public interface 接口名称
- 接口内容
- }
- .java ->class
- 2.接口内容
- java7
- 1.常量
- 2.抽象方法
- java8
- 1.默认方法
- 2.静态方法
- java9
- 1.私有方法
- 使用接口的步骤
- 1.定义一个接口
- 2.实现一个接口,并且重写里面所有的抽象方法
- 3.创建一个实现类
- 今天学习的是默认方法 定义一个名称为MyInterface
• 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();
}
//在任何java版本中,接口都是抽象方法
//public abstract 返回值类型 方法名称(参数列表);
//注意事项:
//1.抽象方法 修饰字必须是 public abstract
//2.关键字可以省略(ps:今天我们不可以省略)
public interface MyInterface {
public abstract void methodA();
abstract void methodB();
public void methodC();
void methodD();}
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”);
}
}
}
运行结果
在使用接口时,需要注意以下几点。
(1)java接口不能被实例化。
(2)java接口中声明的成员自动被设置为public,因此,java接口不能声明私有成员。
(3)java接口中不能出现方法体。
(4)这个可以通过使用关键字extends继承他接口。
2.接口的实现和使用
一旦接口被定义一个或多个类便可以实现该接口。当一个类实现一个接口时,要在该类的定义中,包括implments句子,然后实现接口所定义的全部方法。
实现接口时需要注意:当一个类实现一个接口时,必须实现接口中定义的方法,否则该类必须声明为抽象类
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();
}
}
public interface MyInterfaceDefault {
public abstract void usb2();
//讲usb2.0升级到3.0
public default void usb3() {
System.out.println(“这是usb3.0新增加的功能”);
}}
public class MyInterfaceDefaultA implements MyInterfaceDefault{
@Override
public void usb2() {
System.out.println(“我是笔记本电脑的usb2.0”);
}}
public class MyInterfaceDefaultB implements MyInterfaceDefault{
@Override
public void usb2() {
System.out.println(“我是笔记本电脑的usb2.0”);
}}
运行结果