活动地址:CSDN21天学习挑战赛
目录
什么是接口
编程定义上的接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。
接口是对强类型的面向对象编程语言特有东西,如C#,Java,通俗地说它的出现就是对这些强类型语言定义一个标准的入口然后供后续子孙继承使用。
举个例子,我们使用的手机,都有充电接口,目前主流的手机充电器接口主要有三种:Micro USB接口;USB Type C接口;Lightning接口。这三种接口规定了什么手机使用什么充电口,我们能分清充电头的形状,大小。
接口的定义
要定义一个接口使用interface关键字完成。
接口的方法可变量可以不用写修饰符和权限访问符
在接口里面只能够使用一种访问权限——public
public interface a {
public static final String MSG = "Hello";// 全局常量
// 抽象方法
public abstract void print();
}
public interface b {
String MSG = "Hello";// 全局常量
// 抽象方法
void print();
}
由于接口里面存在有抽象方法,所以接口对象不可能直接使用关键字new进行实例化的操作,所以接口的使用原则如下:
接口必须要有子类,但是此时一个子类可以使用implements关键字实现多个接口;
接口的子类(如果不是抽象类),必须要覆写接口中的全部抽象方法;
接口的对象可以利用子类对象的向上转型进行实例化操作。
接口的实现
接口的实现要用implements关键字
public class b implements a{
@Override
public void print() {
System.out.println(MSG);
}
}
class c{
public static void main(String[] args) {
a a1= new b();
a1.print();
}
}
以上的代码实例化了b类对象。由于现在b是a子类,所以b类的对象可以变成a接口的对象。
接口和抽象类
但是要知道一点,对于子类而言,除了接口之外,还可能会去继承抽象类,所以说一个子类既要继承抽象类又要去实现接口的话,那么请先使用extends继承,而后再使用implements实现。
public class b extends c implements a{
@Override
public void print() {
System.out.println(MSG);
}
@Override
void run() {
System.out.println("我在跑!");
}
}
abstract class c{
abstract void run();
}
class test{
public static void main(String[] args) {
a a1 = new b();
c c1 = new b();
a1.print();
c1.run();
}
}
接口多继承
public class b extends c implements a,a1{
@Override
public void print() {
System.out.println(a.MSG);
}
@Override
void run() {
System.out.println("我在跑!");
}
@Override
public void print1() {
System.out.println(a1.MSG);
}
}
interface a {
public static final String MSG = "Hello";// 全局常量
// 抽象方法
public abstract void print();
}
interface a1 {
public static final String MSG = "Hi";// 全局常量
// 抽象方法
public abstract void print1();
}
interface a2 {
public static final String MSG = "你好";// 全局常量
// 抽象方法
public abstract void print2();
}
//继承多个父接口
interface A extends a, a1, a2 {
}
abstract class c{
abstract void run();
}
class test{
public static void main(String[] args) {
a a1 = new b();
c c1 = new b();
a1.print();
c1.run();
}
}
从上面代码可以看出,一个类只能继承一个抽象类,但是可以实现多个接口
一个抽象类只能够继承一个抽象的父类,而接口没有这个限制;
在Java里面,接口的主要功能是解决单继承局限问题。