private:可以定義方法,屬性,定義的方法和屬性不能被類的外部所看到。
default:可以在本包的任意地方訪問。
public:都可以訪問,不受任何限制。
protected:保護,不同包的非子類不可以訪問。
protected權限,在不同包的它的子類能夠被訪問:
package org.lxh.demo08.g ; public class HelloDemo{ protected String name = "LXH" ; // 只能在本包及不同包的子類中訪問 };
在其他包的子類訪問這個屬性。
package org.lxh.demo08.h ; import org.lxh.demo08.g.HelloDemo ; class SubHelloDemo extends HelloDemo{ //在其他包中的子類! public void print(){ System.out.println("訪問受保護屬性:" + super.name) ; } }; public class ProtectedDemo01{ public static void main(String args[]){ SubHelloDemo sub = new SubHelloDemo() ; sub.print() ; } };
運行結果:
訪問受保護屬性:LXH
如果現在沒有使用子類,而是直接在不同類中訪問,則會出現無法訪問的錯誤。
package org.lxh.demo08.h ; import org.lxh.demo08.g.HelloDemo ; public class ProtectedDemo02{ public static void main(String args[]){ HelloDemo sub = new HelloDemo() ; System.out.println(sub.name) ; // 錯誤的,不同包的類無法訪問 } };
回顧
當產生一個類之後,爲了保證類中的內容不被外部直接看到,則使用private關鍵字。但是,如果兩個有關係的類要進行屬性相互訪問的話就比較麻煩。
之前只能使用getter(),和setter()方法取得和設置,所以爲了減少私有屬性的的訪問的麻煩,使用了內部類,但是內部類會破壞程序的結構。
爲了讓一個類的內容可以方便的使用,使用了繼承的概念,但是在繼承中,private屬性也是無法被子類看到,所以此時,爲了方便子類的操作,
可以將屬性使用protected進行封裝,這樣一來,外部也無法看到(不同包)。
之後有了繼承之後,既然有了父子的關係,所以可以使用向上或者向下的轉型,以完成多態性,但是,在開發中,類與類直接直接繼承並不多見,而往往
繼承抽象類,或實現接口,當若干個操作間需要解耦合的時候,就可以使用接口完成。
既然有內部類了,則如果一個接口或者抽象類的子類只使用一次,則可以將其定義爲匿名內部類。
開發中沒有包的類是絕對不存在的。
封裝-》繼承-》多態。
JAVA命名規範
類:所有單詞首字母大寫。
方法:第一個首字母小寫,之後每個單詞首字母大寫:如:getInfo();
屬性:第一個首字母小寫,之後每個單詞首字母大寫:如:studentName;
包:所有單詞的字母小寫,如:org.lxh.demo08.h
常量:所有字母大寫,如:FLAG.
總結:
protected訪問權限;
命名規範。