Java中的「特殊的抽象類」——接口

這是我參與更文挑戰的第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

總結起來接口主要有以下用途:對象

  1. 定義變量接口

  2. 調用其餘接口中定義的常量

  3. 被其餘類實現。

咱們來看一個具體代碼來分析

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站觀看學習。*/

相關文章
相關標籤/搜索