Java-封裝 接口


Java 封裝

封裝是指一種將抽象性函式接口的實現細節部分包裝、隱藏起來的方法
封裝可以被認為是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問
要訪問該類的代碼和數據,必須通過嚴格的接口控制
封裝最主要的功能在於能夠修改自己的實現代碼,而不用修改那些調用代碼的程序片段

  • 封裝的優點
    良好的封裝能夠減少耦合、類內部的結構可以自由修改、可以對成員變量進行更精確的控制、隱藏信息,實現細節

  • 實現Java封裝的步驟

      public class EncapTest{
      	// 修改屬性的可見性來限制對屬性的訪問(一般限制為`private`)
      	private String name;
      	private String idNum;
      	private int age;
    
      	//對每個值屬性提供對外的公共方法訪問,即創建一對賦取值方法,用於對私有屬性的訪問
      	public int getAge() {
      		return age;
      	}
      	public String getName() {
      		return name;
      	}
      	public String getIdNum() {
      		return idNum;
      	}
      	public void setAge(int newAge) {
      		age = newAge;
      	}
      	public void setName(String newName) {
      		name = newName;
      	}
      	public void setIdNum(String newId) {
      		idNum = newId;
      	}
      }
      //變量如何被訪問
      public class RunEncap{
      	public static void main(String args[]) {
      		EncapTest encap = new EncapTest();
      		encap.setName("James");
      		encap.setAge(20);
      		encap.SetIdNum("1234");
    
      		System.out.print("Name:" + encap.getName() + "Age:" + encap.getAge());
      	}
      }
    

接口

接口是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明;一個類通過繼承接口的方式,從而來繼承接口的抽象方法
接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同概念。類描述對象的屬性和方法;接口則包含類要實現的方法
除非實現接口放入類是抽象類,否則該類要定義接口中的所有方法
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類

  • 接口與類相似點

    1. 一個接口可以有多個方法
    2. 接口文件保存在.java結尾的文件中,文件名使用接口名
    3. 接口的字節碼文件保存在.class結尾的文件中
    4. 接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中
  • 接口與類的區別

    1. 接口不能用於實例化對象
    2. 接口沒有構造方法
    3. 接口中所有的方法必須是抽象方法
    4. 接口不能包含成員變量,除了staticfinal變量
    5. 接口不是被類繼承了,而是要被類實現
    6. 接口支持多繼承
  • 接口的聲明

      [可見度] interface 接口名稱 [extends 其他的類名] {
      		//聲明變量
      		//抽象方法
      }
    
  • 實例

      interface Animal {
      	public void eat ();
      	public void traval ();
      }
    
  • 接口的實現
    當類實現接口的時候,類要實現接口中所有的方法;類使用implements關鍵字實現接口

      public class MammalInt implements Animal{
      	public void eat() {
      		System.out.println("Mammal eats");
      	}
    
      	public void traval() {
      		System.out.println("Mammal travels");
      	}
    
      	public int noOfLegs() {
      		return 0;
      	}
    
      	public static void main(String args[]) {
      		MamamlInt m = new MammalInt();
      		m.eat();
      		m.traval();
      	}
      }
    
  • 重寫接口中聲明的方法時,需要注意以下規則

    1. 類在實現接口的方法時,不能拋出強制性異常,只能在接口中,或者繼承接口的抽象類中拋出該強制性異常
    2. 類在重寫方法時要保持一致的方法名,並且應該保持相同或者相兼容的返回值類型
    3. 如果實現接口的類是抽象類,那么就沒必要實現該接口的方法
  • 在實現接口的時候,需要注意

    1. 一個類可以同時實現多個接口
    2. 一個類只能繼承一個類,但是能實現多個接口
    3. 一個接口能繼承另一個接口
  • 接口的繼承--使用extends關鍵字,子接口繼承父接口的方法

              // Sport.java
      public interface Sports
      {
      	public void setHomeTeam(String name);
      	public void setVisitingTeam(String name);
      }
    
      // Football.java
      public interface Football extends Sports
      {
      	public void homeTeamScored(int points);
      	public void visitingTeamScored(int points);
      	public void endOfQuarter(int quarter);
      }
      // Hockey.java
      public interface Hockey extends Sports
      {
      	public void homeGoalScored();
      	public void visitingGoalScored();
      	public void endOfPeriod(int period);
      	public void overtimePeriod(int ot);
      }
    
  • 接口的多繼承

      public interface Hockey extends Sports, Event


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM