这是我参与更文挑战的第5天,活动详情查看: 更文挑战
接口
在学习接口之前我们同样要问自己两个问题
1.什么是接口?
2.接口用来干什么?
首先让我们来回答第一个问题:什么是接口?
可以说接口是一种“特殊的抽象类”。接口中不能包含普通方法,所有的方法都需要是抽象方法。但java8
中接口有了些改动,允许在接口中定义默认方法,默认方法可以有方法体。
接口是从多个类中抽象出来的规范,这意味着接口里通常定义的是一组公用方法,接口不提供任何实现。
接口的定义
和定义类有些不同,接口通过interface关键字来定义。
public interface 接口名 extends 父接口1,父接口2{//也可以米有父接口
常量1;
常量2;
//也可以没有常量
抽象方法1;
抽象方法2;
.......//也可以没有抽象方法
}
/*
修饰符public如果省略,则默认采用包访问权限。
*/
/*
1.接口中的成员变量默认使用public static fianl来修饰,因此接口中只能定义常量,不能定义变量,
并且常量在定义时就要初始化。
2.接口中的方法如果不是默认方法或类方法,默认使用public abstract 来修饰。
3.接口中的所有成员均是public访问权限,因此在重写接口中的方法时一定不能省略public
*/
下面我们来看一个具体例子
public interface InterfaceA {
public static int MAX_NUMBER=100000;//常量
public void speak(String s);//抽象方法,默认使用abstract修饰
public static void show(){
System.out.println("我是类方法,必须要有方法体");
}
public default void Print(){
System.out.println("我是默认方法,必须要有方法体");
}
}
接下来我们看第二个问题,接口能用来干什么?
总结起来接口主要有如下用途:
-
定义变量
-
调用其他接口中定义的常量
-
被其他类实现。
我们来看一个具体代码来分析
public interface InterfaceA {
public static int MAX_NUMBER=100000;//常量
public void speak(String s);//抽象方法,默认使用abstract修饰
public static void show(){
System.out.println("我是类方法,必须要有方法体");
}
public default void Print(){
System.out.println("我是默认方法,必须要有方法体");
}
}
import java.util.Scanner;
public class Test implements InterfaceA {
public Test(){
}
public void speak(String s){//权限只能是public
System.out.println(s);
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Test test=new Test();//test中有重写的speak方法,默认的Print方法
test.speak("我是重写的方法");
test.Print();
InterfaceA A=new Test();//A是上转型对象,A只能调用父类中的方法即Print()和show()方法,和子类重写的方法
A.Print();
A.speak("我是上转型对象");
InterfaceA.show();//类变量和类方法通过类名来调用。
System.out.println(MAX_NUMBER);
}
}
充分利用接口可以极好的降低程序各模块之间的耦合,从而提高系统的可扩展性和可维护性。
关于接口的一些特点我们就学习到这里,如果以上内容有错误或遗漏之处,欢迎大家留言指正!
/* 关于接口和抽象类的一些区别和联系,建议大家去b站观看学习。*/