1.接口概念java
接口能夠理解爲一種特殊的類,有全局常量和公共的抽象方法所組成。ide
若是說類是一種具體的實現體,而接口定義了某些類所必須遵照的規範,接口不關心這些類的內部數據,也不關心這些類方法的實現細節,只規定這些類裏必須提供接口所定義的方法。(這與抽象類很像)測試
2.接口語法spa
[修飾符] interface 接口名 [extends 父接口1,父接口2]code
{對象
零到多個常量定義...繼承
零到多個抽象方法的定義...接口
}input
注:接口是用來被繼承、被實現的,修飾符通常用public ,也能夠不加修飾符,但不能使用private和protected修飾接口;編譯
接口與抽象類類似,全部接口其實有ababstract關鍵字,只是系統幫咱們省略了,寫了也不報錯;
接口能夠繼承多個父接口,也能夠不繼承。
3.使用接口
實現接口使用implements關鍵字(而實現父類使用extends),Java中一個類只能繼承一個父類,不夠靈活,能夠經過實現多個接口作補充。
4.繼承父類實現接口的語法
[修飾符] class 類名 extends 父類 implements 接口1,接口2...
{
類體部分
}
舉例以下(仔細看測試類中接口的實現方法):
父類
package Java2_4_Practice; /** * 現有Shape圖形類,用Circle圓形子類,求圖形周長和麪積 * @author qiang * */ public abstract class Shape { public abstract void perimeter(); //抽象定義計算周長的方法 public abstract void area(); //抽象定義計算面積的方法 }
接口類
package Java2_4_Practice; public interface IMaxArea { public void maxArea(); }
子類(繼承父類並實現接口)
package Java2_4_Practice; /** * 現有Shape圖形類,用Circle圓形子類,求圖形周長和麪積 * @author qiang * */ import java.util.Scanner; public class Circle extends Shape implements IMaxArea { @Override public void perimeter() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("請輸入圓形的半徑:"); float a = input.nextFloat(); System.out.println("圓的周長爲:"+(a*2*Math.PI)); } @Override public void area() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("請輸入圓形的半徑:"); float a = input.nextFloat(); System.out.println("圓的面積爲:"+(a*a*Math.PI)); } @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("圖形周長相等時,圓形的面積最大!"); } }
測試類(仔細看其中接口的實現方法)
package Java2_4_Practice; /** * 現有Shape圖形類,用Circle圓形子類,求圖形周長,再使用接口 * @author qiang * */ public class Test2 { public static void main(String[] args) { Shape shape1 = new Circle();//抽象類父類引用子類 shape1.perimeter(); //使用接口與抽象類是相相似的,用一個接口的引用指向一個實現了接口的對象 IMaxArea im1 = new Circle(); im1.maxArea(); /* * 實現接口還能夠有以下兩種方法,其中的接口方法自行編譯 */ //方法1:接口引用指向new一個新接口,而後編譯方法,再用new的接口調用方法 IMaxArea im2 = new IMaxArea(){ @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("1使用匿名內部類的方式實現接口"); } }; im2.maxArea(); //方法2:直接new一個接口,而後編譯方法,最後花括號加.調用方法 new IMaxArea() { @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("2使用匿名內部類的方式實現接口"); } }.maxArea(); } }
運行結果:
請輸入圓形的半徑: 3 圓的周長爲:18.84955592153876 圖形周長相等時,圓形的面積最大! 1使用匿名內部類的方式實現接口 2使用匿名內部類的方式實現接口