Java 面向對象理解

Java 面向對象的三大特性

    封裝

      封裝通常基於4種訪問修飾符來實現:缺省、private、public和protected

       假如我們想描述人的屬性,可以把人的相關屬性name,age...封裝成一個人類,屬於類層次的封裝,用一組相關屬性描述一類東西.

      public class Teacher{  //老師類
         public String name;//老師的名字
         public Family family;//家庭類
         List<Student> students;//老師名下的學生集合
      }

   一般情況下,這樣的數據封裝還不夠,我們還需要限制訪問權限

成員變量的封裝

        class Bank{ 
           private String money;//存款數目
           public String getMoney() {
              return money;//銀行人員執行取款操作
           }
           public void setMoney(String money) {
             this.money = money;//銀行人員執行存款操作
           }
        }

成員方法的封裝:

/**
 * @author QinGuan
 * @date:2016-3-1 上午10:39:40
 * @version :3.0
 *
 */
package com.cloneTest;

public class vocation implements Cloneable{
	public String name;

	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	public void setLoad(){
		getLoad();//調用類中私有方法
	}
	private void getLoad(){   //此方法被封裝,僅僅可以內部方法調用
		System.out.println("load");
	}
}

   以上的封裝是在屬性和方法的層次上,還有一種更加有意思的封裝形式是內部類,規則是:

成員內部類可以無條件訪問外部類的所有成員屬性和成員方法(包括private成員和靜態成員), 這個規則結合繼承,就巧妙的解決了Java單繼承的問題:

    public class External extends Father { 
    	private String Exname;
    	//內部類
    	class internal {
    		private String inname;
    
    		public void print() {
    			System.out.println(Exname);
    			fatherPrint();//可以直接訪問Father類的打印方法
    		}
    	}
    
    	public void get() {
    		System.out.println(internal.class);
    	}
    
    	public String getExname() {
    		return Exname;
    	}
    
    	public void setExname(String exname) {
    		Exname = exname;
    	}
    }

    繼承

       Java中的繼承通過關鍵字 extends 實現,子類繼承父類全部內容,但是可訪問的內容僅僅限於非 private 修飾的內容.

     子類在實例化的時候,默認先調用父類的無參構造方法,所以父類一般會提供一個無參的構造方法以供子類調用,當然了,子類也可以通過 super(參數列表);來指定調用的父類構造方法

        public class Father {
	       public String name;

           Father() {
        
           }

           Father(String name) {
             this.name = name;
           }
	
        public class Son extends Father {
          private String name;
        
          Son (String name){
        	super(name);//調用父類的有參構造方法
          }

    多態

      在繼承的基礎上的實現,父類的變量指向子類實例化的內容

     參考資料:http://blog.csdn.net/thinkGhoster/archive/2008/04/19/2307001.aspx

      百度文庫:http://wenku.baidu.com/view/73f66f92daef5ef7ba0d3c03.html


方法的重寫和重載

    重載,屬於同一個類中的方法,方法名一樣,參數列表不同,返回值類型可以相同也可以不相同。

    重寫,子類對繼承自父類的方法進行重新實現.相同的方法簽名,相同的返回值,不小於父類方法的訪問權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章