導航:首頁 > 編程語言 > java修飾符繼承

java修飾符繼承

發布時間:2022-08-22 17:57:12

java修飾符都有什麼,請詳細解答下

Java語言提供了很多修飾符,主要分為以下兩類:
1、訪問修飾符;
2、非訪問修飾符。
(視頻教程推薦:java視頻教程)
訪問控制修飾符
Java中,可以使用訪問控制符來保護對類、變數、方法和構造方法的訪問。Java 支持 4 種不同的訪問許可權。
default (即默認,什麼也不寫): 在同一包內可見,不使用任何修飾符。使用對象:類、介面、變數、方法。
private : 在同一類內可見。使用對象:變數、方法。 注意:不能修飾類(外部類)
public : 對所有類可見。使用對象:類、介面、變數、方法
protected : 對同一包內的類和所有子類可見。使用對象:變數、方法。 注意:不能修飾類(外部類)。
非訪問修飾符
為了實現一些其他的功能,Java 也提供了許多非訪問修飾符,如下:
static 修飾符,用來修飾類方法和類變數。
final 修飾符,用來修飾類、方法和變數,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變數為常量,是不可修改的。
abstract 修飾符,用來創建抽象類和抽象方法。
synchronized 和 volatile 修飾符,主要用於線程的編程

㈡ JAVA中什麼是繼承

繼承在本職上是特殊一般的關系,即常說的is-a關系。子類繼承父類,表明子類是一種特殊的父類,並且具有父類所不具有的 一些屬性或方法。

1.Java繼承的語法格式:

Java繼承的關鍵字是:extends

public class 子類名 extends 父類名{...}

如: public class UNStudent extends Student {...} 註:1.子類又稱超類,拓展類 ;父類又稱基類。

2.Java中類的繼承只能是單繼承(單根繼承),即一個類只能繼承一個父類,但是一個類可以由多個類來繼承它。

3.Java會給每一個沒有設置父類的類,自動添加一個父類就是Object 。

(2)java修飾符繼承擴展閱讀:

一、子類繼承父類的結果

1.子類繼承父類後,繼承到了父類所有的屬性和方法。註:是所有。

2.子類可調用的方法也要看情況而定:

子類和父類在同一個包下時 「子類和子類的對象」可以調用父類的默認的,受保護的,公有的屬性以及方法。

子類和父類在不同的包下時,在子類中可以調用受保護的,公有的屬性以及方法,而子類的對象可以調用受保護的,公有的屬性以及方法。

二、方法的重寫

1.當子類和父類都有某種方法,而子類的方法更加要求細致,或者實現功能不同,就需要方法的重寫。

2.重寫條件

①必須要存在繼承關系;只有繼承之間的關系才能有方法的重寫

②方法的返回值類型,方法名,參數個數,參數類型,參數順序,必須要完全一致;

如:父類中方法 public void play (int n ; String s){方法體1...}

重寫後的子類方法public void play(int n ; String s){方法體2...}

3.子類重寫方法時的訪問修飾符可以大於或者等於父類方法的訪問修飾符。

4.重寫後的方法會被優先調用。

三、自動轉型

自動轉型的實現要求有繼承關系

格式如下:父類名 對象名 = new 子類構造方法;

如:Student stu = new UNStudent;

而強制轉型格式如下:子類名 對象名 = (子類名)父類對象名

如:UNStudent un = (Student)stu;

自動轉型可以拓寬方法的作用訪問域

在使用自動轉型後,子類自己定義的方法是不能在自動轉型後執行;

原因是因為Java的編譯機制,它會優先判斷父類中是否存在該方法,如果存在則通過編譯,如果不存在則報錯。

第二種自動轉型:轉型後只需要不同類的不同對象調用想吐的方法,很方便!

/**訪問修飾符 返回值數據類型 方法名(父類類型 參數名,...){

調用方法。

}

父類名 對象名 = new 子類名;

子類名 對象名 = new 子類名;

方法名(對象名);

*/

比如拿到駕駛證為A2的人,可以駕駛重型貨車,當然也可以駕駛大型貨車,中型貨車,小型貨車,小客車,小轎車,摩托車... 可以選擇第二種自動轉型的方法,便於調用同一個方法。

自動轉型好處:1.減少冗餘代碼;2.在方法設置參數時,擴大訪問范圍。

四、多態

多態是由方法重載,繼承,方法重寫,自動轉型等技術的組合。

五、為什麼需要繼承?

1.提高代碼的重用性。

2.提高程序的擴展性。

JAVA繼承總結

㈢ Java中目前學習涉及到的四種許可權修飾符都有什麼並說明各自的許可權范圍

簡單說一下:

  1. public 公共許可權,

    可以修飾類,成員變數,成員方法,構造方法
    被public修飾的成員,可以在任何一個類中被調用,不管同包或不同包,是許可權最大的一個修飾符

  2. protected 受保護許可權,

    可以修飾成員變數,成員方法,構造方法,不能修飾類(外部類,內部類不考慮)

    如果有不同包的類想調用它們,那麼這個類必須是定義它們的類的子類。

  3. default 默認許可權,

    類,成員變數,成員方法,構造方法都能使用默認許可權,即不寫任何關鍵字

    默認許可權即同包許可權,同包許可權的元素只能在定義它們的類中使用,以及同包的類中被調用

  4. private 私有許可權,

    可以修飾成員變數,構造方法,成員方法,不能修飾類(外部類,內部類不考慮)

    被private修飾的成員,只能在定義它們的類中使用,在其他類中不能調用。

㈣ java繼承與類


首先,需要了解一下java關於類繼承和介面實現的基礎理論知識,如下:

類繼承:繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。

介面實現:介面實現在java中是一種特殊繼承方式,介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格式如下:

[修飾符] class <類名> [implements 介面列表]{

}

然後,需要創建父類和定義介面,如下:

創建父類:

classBird{
intlegnum=2;
voidegg(){
};
}

定義介面:

interfaceFlyanimal{
voidfly();
}

最後,可以創建一個類來繼承上面的父類和實現上面的介面,如下:

{
publicvoidfly(){
System.out.println("pigeoncanfly");
}
publicvoidegg(){
System.out.println("pigeoncanlayeggs");
}
}



㈤ java中類修飾符有哪些

1.class不加修飾符的時候 即直接聲明 class A{ }

在這種情況下,class前面沒有加任何的訪問修飾符,通常稱為「默認訪問模式」,在該模式下,這個類只能被同一個包中的類訪問或引用,這一訪問特性又稱包訪問性。

2.類修飾符:

(1)public(訪問控制符),將一個類聲明為公共類,他可以被任何對象訪問,一個程序的主類必須是公共類。

(5)java修飾符繼承擴展閱讀: 網路-java關鍵字

㈥ java 中繼承和protected修飾符的問題

protected不光是子類訪問限制,還有包訪問限制.
你的A x = new B()肯定是在類B的包裡面寫的,那麼先不管A x = new B()是什麼意思.
只看A x ;這是A類引用無可置疑,那麼引用一個什麼呢?引用一個外包的對象new B(),這個對象裡面有個 b(繼承的),那麼很自然x和new B()不在同一包,所以訪問不到new B()的b

那麼A x = new B();是什麼意思?這是父類引用子類對象,是多態的一種表現.
多態你得看看,一言兩語說不清楚.
現在來說,只要你看到介面引用引用實現類對象,父類引用引用子類對象,都是多態,這樣有什麼效果?你的所有實現類或者子類,可能根本不需要知道究竟有什麼功能,但你始終會知道,介面或父類提供的功能.

㈦ Java里子類繼承時修飾符的問題

一個程序中只能有一個公共類,你改錯了,應該把前面的那個父類A的public 去掉

㈧ java中的修飾符

static 表示靜態,它可以修飾屬性,方法和代碼塊。

1,static修飾屬性(類變數),那麼這個屬性就可以用 類名.屬性名 來訪問,也就是使這個屬性成為本類的類變數,為本類對象所共有。這個屬性就是全類公有。(共有的類變數與對象無關,只和類有關)。

類載入的過程,類本身也是保存在文件中(位元組碼文件保存著類的信息)的,java會通過I/O流把類的文件(位元組碼文件)讀入JVM(java虛擬機),這個過程成為類的載入。JVM(java虛擬機)會通過類路徑(CLASSPATH)來找位元組碼文件。

類變數,會在載入時自動初始化,初始化規則和實例變數相同。

注意:類中的實例變數是在創建對象時被初始化的,被static修飾的屬性,也就是類變數,是在類載入時被創建並進行初始化,類載入的過程是進行一次。也就是類變數只會被創建一次。

2,static修飾方法(靜態方法),會使這個方法成為整個類所公有的方法,可以用類名.方法名 訪問。

注意:static修飾的方法,不直接能訪問(可以通過組合方式訪問)本類中的非靜態(static)成員(包括方法和屬性),本類的非靜態(static)方法可以訪問本類的靜態成員(包括方法和屬性),可以調用靜態方法。靜態方法要慎重使用。在靜態方法中不能出現this關鍵字。

注意:父類中是靜態方法,子類中不能覆蓋為非靜態方法,在符合覆蓋規則的前提下,在父子類中,父類中的靜態方法可以被子類中的靜態方法覆蓋,但是沒有多態。(在使用對象調用靜態方法是其實是調用編譯時類型的靜態方法)

注意:父子類中,靜態方法只能被靜態方法覆蓋,父子類中,非靜態方法只能被非靜態方法覆蓋。

java中的main方法必須寫成static的因為,在類載入時無法創建對象,因為靜態方法可以不通過對象調用
所以在類的main方法。所在在類載入時就可以通過main方法入口來運行程序。

注意:組合方式,就是需要在方法中創建一個所需要的對象,並用這個對象來調用任意所需的該對象的內容,不會再受只能訪問靜態的約束。

3,static修飾初始代碼塊,這時這個初始代碼塊就叫做靜態初始代碼塊,這個代碼塊只在類載入時被執行一次。可以用靜態初始代碼塊初始化一個類。

動態初始代碼塊,寫在類體中的「{}」,這個代碼塊是在生成對象的初始化屬性是運行。這種代碼塊叫動態初始代碼塊。

類在什麼時候會被載入,構造(創建)對象時會載入類,調用類中靜態方法或訪問靜態屬性也是會載入這個靜態方法真正所在的類。在構造子類對象時必會先載入父類,類載入會有延遲載入原則,只有在必須載入時才會載入。

final修飾符,可以修飾變數,方法,類

1,final修飾變數
被fianl修飾的變數就會變成常量(常量應當大寫),一旦賦值不能改變,(可以在初始化時直接賦值,也可以在構造方法里也可以賦值,只能在這兩種方法里二選一,不能不為常量賦值),fianl的常量不會有默認初始值,對於直接在初始化是賦值時final修飾符常和static修飾符一起使用。

2,final修飾方法,被final修飾的方法將不能被其子類覆蓋,保持方法的穩定不能被覆蓋。
3,final修飾類,被final修飾的類將不能被繼承。final類中的方法也都是final的。

注意:final,不能用來修飾構造方法,在父類中如果有常量屬性,在子類中使用常量屬性時是不會進行父類的類載入。靜態常量如果其值可以確定,就不會載入該類,如果不能確定則會載入該常量所在的類。

不變模式,對象一旦創建屬性就不會改變。用final修飾屬性,也用final修飾類(強不變模式),用final修飾屬性(弱不變模式)。

不變模式的典型體現:java.lang.String類,不變模式可以實現對象的共享(可以用一個對象實例賦值給多個對象變數。)

池化的思想,把需要共享的數據放在池中(節省空間,共享數據)
只有String類可以用「」中的字面值創建對象。在String類中,以字面值創建時,會到Java方法空間的串池空間中去查找,如果有就返回串池中字元串的地址,並把這個地址付給對象變數。如果沒有則會在串池裡創建一個字元串對象,並返回其地址付購對象變數,當另一個以字面值創建對象時則會重復上述過程。
如果是new在堆空間中創建String類的對象,則不會有上述的過程。

String類中的intern()方法會將在堆空間中創建的String類對象中的字元串和串池中的比對,如果有相同的串就返回這個串的串池中的地址。

不變模式在對於對象進行修改,添加操作是使相當麻煩的,他會產生很多的中間垃圾對象。創建和銷毀的資源的開銷是相當大的。

String類在字元串連接時會先的效率很低,就是因為它所產生的對象的書性是不能夠修改的,當連接字元串時也就是只能創建新的對象。

對於很多的字元串連接,應當使用StringBuffer類,在使用這個類的對象來進行字元串連接時就不會有多餘的中間對象生成,從而優化了效率。

abstract(抽象)修飾符,可以修飾類和方法

1,abstract修飾類,會使這個類成為一個抽象類,這個類將不能生成對象實例,但可以做為對象變數聲明的類型,也就是編譯時類型,抽象類就像當於一類的半成品,需要子類繼承並覆蓋其中的抽象方法。

2,abstract修飾方法,會使這個方法變成抽象方法,也就是只有聲明(定義)而沒有實現,實現部分以";"代替。需要子類繼承實現(覆蓋)。

注意:有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
abstract修飾符在修飾類時必須放在類名前。

abstract修飾方法就是要求其子類覆蓋(實現)這個方法。調用時可以以多態方式調用子類覆蓋(實現)後的方法,也就是說抽象方法必須在其子類中實現,除非子類本身也是抽象類。

注意:父類是抽象類,其中有抽象方法,那麼子類繼承父類,並把父類中的所有抽象方法都實現(覆蓋)了,子類才有創建對象的實例的能力,否則子類也必須是抽象類。抽象類中可以有構造方法,是子類在構造子類對象時需要調用的父類(抽象類)的構造方法。

final和abstract,private和abstract,static和abstract,這些是不能放在一起的修飾符,因為abstract修飾的方法是必須在其子類中實現(覆蓋),才能以多態方式調用,以上修飾符在修飾方法時期子類都覆蓋不了這個方法,final是不可以覆蓋,private是不能夠繼承到子類,所以也就不能覆蓋,static是可以覆蓋的,但是在調用時會調用編譯時類型的方法,因為調用的是父類的方法,而父類的方法又是抽象的方法,又不能夠調用,所以上的修飾符不能放在一起。

抽象(abstract)方法代表了某種標准,定義標准,定義功能,在子類中去實現功能(子類繼承了父類並需要給出從父類繼承的抽象方法的實現)。
方法一時間想不到怎麼被實現,或有意要子類去實現而定義某種標准,這個方法可以被定義為抽象。(abstract)

模板方法模式

用abstract把制訂標准和實現標准分開,制定的標准就是模板,實現就是按模板標准來實現,也就是繼承模板,實現模板中相應功能的方法。模板中不允許修改的方法可以用fianl來修飾,這個方法不能使抽象方法,為保證安全,封裝,把模板中不公開的部分用protected(保護)修飾。

㈨ java修飾符作用范圍

1、java中的修飾符

1)訪問修飾符:

2)靜態修飾符:


static是一個修飾符,用於修飾成員(成員變數和成員函數)

㈩ java 三種訪問修飾符各如何使用

public 在任何地方都可訪問 protected同包之間可以訪問非同包子類可以訪問 默認友好類:同包可以訪問 private本類可以訪問
下面是三大修飾符,你也順便看看吧

如果一個類中如果有抽象方法,那麼這個類必須是抽象類 , 抽象類中未必有抽象方法
抽象類抽象方法 抽象類中可以有抽象方法,也可以有實例方法 抽象方法只能聲明,不能實現後面用 ; 結尾
抽象類的子類如果不希望成為抽象類,那麼它就必須去實現父類中所有的抽象方法
抽象類允許定義構造方法
抽象類 只能聲明引用 , 不能創建對象
抽象方法不能與static 一起使用 , abstract 類中的方法必須在子類中重寫 ,並實現多態
Static 只能繼承並重寫父類中方法 , 但是不能實現多態 .
抽象方法不能與final 一起使用 , final 修飾的方法不能夠在子類中覆蓋,而抽象方法是必須要求要在子類中覆蓋的.
抽象類不能與private一起使用,抽象類中的方法都必須要在子類中重寫後實現,而private修飾的方法不能繼承,更談不上重寫覆蓋
Static

靜態的 . 可修飾 : 方法, 成員變數(屬性)
靜態屬性全類共有,由類名調用
靜態方法中只能訪問非靜態的成員(屬性+方法);
靜態方法可以被覆蓋,但是沒有多態

靜態初始化代碼塊
在類載入的時候,執行一次

類載入: 1 . 需要的話,先載入父類(可能父類已經載入過 ,這時候就可以不用載入父類了)
2 . 為靜態屬性分配空間並初始化
3 . 按順序執行靜態初始化代碼塊
Final

可修飾: 變數(局部變數和成員變數) : 賦值後不能再發生改變
方法 : final 修飾後的方法不能被覆蓋 ,但可以繼承
類 : final類不能被子類繼承
Final修飾屬性時候 , 屬性此時沒有默認值. 此時可以初始化屬性值,或者構造方法中賦值
一般情況下常量為 public static , 常量名全部大寫

這是我學習時候的筆記,希望對你有所幫助

閱讀全文

與java修飾符繼承相關的資料

熱點內容
愛上北斗星男友在哪個app上看 瀏覽:413
主力散戶派發源碼 瀏覽:663
linux如何修復伺服器時間 瀏覽:55
榮縣優途網約車app叫什麼 瀏覽:472
百姓網app截圖是什麼意思 瀏覽:222
php如何嵌入html 瀏覽:809
解壓專家怎麼傳輸 瀏覽:743
如何共享伺服器的網路連接 瀏覽:132
程序員簡易表白代碼 瀏覽:166
什麼是無線加密狗 瀏覽:62
國家反詐中心app為什麼會彈出 瀏覽:67
cad壓縮圖列印 瀏覽:102
網頁打開速度與伺服器有什麼關系 瀏覽:863
android開發技術文檔 瀏覽:65
32單片機寫程序 瀏覽:51
三星雙清無命令 瀏覽:838
漢壽小程序源碼 瀏覽:344
易助erp雲伺服器 瀏覽:533
修改本地賬戶管理員文件夾 瀏覽:419
python爬蟲工程師招聘 瀏覽:285