这是我参与更文挑战的第5天,活动详情查看: 更文挑战java
在学习接口以前咱们一样要问本身两个问题web
1.什么是接口?markdown
2.接口用来干什么?post
首先让咱们来回答第一个问题:什么是接口?学习
能够说接口是一种“特殊的抽象类”。接口中不能包含普通方法,全部的方法都须要是抽象方法。但java8
中接口有了些改动,容许在接口中定义默认方法,默认方法能够有方法体。
接口是从多个类中抽象出来的规范,这意味着接口里一般定义的是一组公用方法,接口不提供任何实现。
复制代码
和定义类有些不一样,接口经过interface关键字来定义。spa
public interface 接口名 extends 父接口1,父接口2{//也能够米有父接口
常量1;
常量2;
//也能够没有常量
抽象方法1;
抽象方法2;
.......//也能够没有抽象方法
}
/*
修饰符public若是省略,则默认采用包访问权限。
*/
/*
1.接口中的成员变量默认使用public static fianl来修饰,所以接口中只能定义常量,不能定义变量,
而且常量在定义时就要初始化。
2.接口中的方法若是不是默认方法或类方法,默认使用public abstract 来修饰。
3.接口中的全部成员均是public访问权限,所以在重写接口中的方法时必定不能省略public
*/
复制代码
下面咱们来看一个具体例子code
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("我是默认方法,必需要有方法体");
}
}
复制代码
接下来咱们看第二个问题,接口能用来干什么?orm
总结起来接口主要有以下用途:对象
定义变量接口
调用其余接口中定义的常量
被其余类实现。
咱们来看一个具体代码来分析
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站观看学习。*/