MEC@JavaSE@基础篇@笔记17@接口

it2024-11-06  7

接口

接口介绍

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。

 接口的定义和特点

定义格式:

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

接口的特点:

接口不能实例化

接口和类之间是实现关系,通过implements关键字表示

public class 类名 implements 接口名 {}

接口的子类(实现类)

要么重写接口中的所有抽象方法

要么是抽象类

接口和类的实现关系,可以单实现,也可以多实现。

public class 类名 implements 接口名1 , 接口名2 {}

代码示例:

//定义第一个接口 public interface Inter { public abstract void study(); } //定义第二个接口 public interface InterA { public abstract void method1(); ​ public abstract void method2(); ​ public abstract void study(); } //定义实现类实现两个接口 public class InterImpl implements Inter, InterA { ​ //实现接口要重写里面所有的抽象方法。 @Override public void study() { System.out.println("我是实现类中的study方法"); } ​ @Override public void method1() { ​ } ​ @Override public void method2() { ​ } } public class Demo1InterFace { /* 接口的[定义]格式: public interface 接口名 {} ​ 类[实现]接口格式: public class 类名 implements 接口名 {} */ public static void main(String[] args) { InterImpl ii = new InterImpl(); ii.study(); } }

接口中的成员特点

成员变量

只能是公有、静态、常变量,即必须有public、static和final联合属性;

默认修饰符:public static final

构造方法

没有构造方法(不会被实例化)

成员方法

只能是公有、抽象方法,即,必须(自动)拥有public和abstract联合属性

默认修饰符:public abstract

关于接口中的方法,JDK8 和 JDK9 中有一些新特性

代码示例:

public interface Inter { //只能是常量,默认用public static final修饰 public static final int NUM = 10; ​ //接口中没有构造方法 //public Inter(){} ​ //只能是抽象方法,默认用public abstract修饰 public abstract void eat(); } class InterImpl extends Object implements Inter { ​ public InterImpl(){ super(); } ​ public void show(){ // NUM = 20; System.out.println(NUM); } ​ //实现一个接口,要重写里面所有的抽象方法 @Override public void eat() { ​ } }

类和接口之间的各种关系

类和类的关系

继承关系,只能单继承,但是可以多层继承。

类和接口的关系

实现关系,可以单实现,也可以多实现。

还可以在继承一个类的同时实现多个接口。

接口和接口的关系

继承关系,可以单继承,也可以多继承。

代码示例1:

public class DemoInterface { /* 类和接口: 实现关系, 可以单实现, 也可以多实现. 并且可以在继承一个类的同时, 实现多个接口. */ public static void main(String[] args) { Zi z = new Zi(); z.method(); z.method1(); z.method2(); } } ​ class Fu { public void method() { System.out.println("Fu类中的method方法"); } } ​ interface InterA { void method1(); } ​ interface InterB { void method2(); } ​ interface InterC{ void method(); } ​ //实现一个接口,要重写里面所有的抽象方法。 class Zi extends Fu implements InterA, InterB, InterC { ​ @Override public void method1() { System.out.println("Zi类重写后的method1方法"); } ​ @Override public void method2() { System.out.println("Zi类重写后的method2方法"); } } ​

代码示例2:

interface InterA { void method1(); } ​ interface InterB { void method2(); } ​ //接口和接口之间是多继承关系 interface InterC extends InterA, InterB { void method3(); } ​ //实现一个接口,要重写里面所有的抽象方法。 //而且当前接口所有父接口的抽象方法也要重写。 class InterCImpl implements InterC { ​ @Override public void method1() { ​ } ​ @Override public void method2() { ​ } ​ @Override public void method3() { ​ } }

接口的特点及作用

1、海纳百川——类型的统一与保护

2、政令统一——规范方法

凡是实现了这个接口的非抽象类,就必须实现这个接口所规定的所有抽象方法。

规范方法的“规范”,主要体现一下几点:

1)指定的所有方法都必须实现,且一个都不能少;

2)规范了方法的名称;

3)规范了方法的参数个数与参数类型;

4)规范了方法的返回值类型。

3、广而告之——方法的公开

4、面向未来——分离原则

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最新回复(0)