Java中的接口

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使用匿名內部類的方式實現接口
相關文章
相關標籤/搜索