超碰免费人人操|国产视频二区久久艹人人操|欧美激情第一页在线|久热最新无码中文视频|91精品国际成人|亚洲成人精品在线视频青青草|久草免费高清完整在线观看|你懂的AV在线日本黄网页|国产黄色AV日韩女同网|欧美成人色区导航片av

Java的訪問(wèn)修飾符與變量的作用

時(shí)間:2025-09-28 19:57:03 java語(yǔ)言

Java的訪問(wèn)修飾符與變量的作用

  Java訪問(wèn)修飾符(訪問(wèn)控制符)

  Java 通過(guò)修飾符來(lái)控制類(lèi)、屬性和方法的訪問(wèn)權(quán)限和其他功能,通常放在語(yǔ)句的最前端。例如:

  public class className { /pic/pic/p>

  Java 的修飾符很多,分為訪問(wèn)修飾符和非訪問(wèn)修飾符。本節(jié)僅介紹訪問(wèn)修飾符,非訪問(wèn)修飾符會(huì)在后續(xù)介紹。

  訪問(wèn)修飾符也叫訪問(wèn)控制符,是指能夠控制類(lèi)、成員變量、方法的使用權(quán)限的關(guān)鍵字。

  在面向?qū)ο缶幊讨,訪問(wèn)控制符是一個(gè)很重要的概念,可以使用它來(lái)保護(hù)對(duì)類(lèi)、變量、方法和構(gòu)造方法的訪問(wèn)。

  Java支持四種不同的訪問(wèn)權(quán)限:

  public:公有的

  被聲明為public的類(lèi)、方法、構(gòu)造方法和接口能夠被任何其他類(lèi)訪問(wèn)。

  如果幾個(gè)相互訪問(wèn)的public類(lèi)分布在不用的包中,則需要導(dǎo)入相應(yīng)public類(lèi)所在的包。由于類(lèi)的繼承性,類(lèi)所有的公有方法和變量都能被其子類(lèi)繼承。

  下面的方法使用了公有訪問(wèn)控制:

  public static void main(String[] arguments) { /pic/p>

  Java程序的main() 方法必須設(shè)置成公有的,否則,Java解釋器將不能運(yùn)行該類(lèi)。

  protected:受保護(hù)的

  被聲明為protected的變量、方法和構(gòu)造方法能被同一個(gè)包中的任何其他類(lèi)訪問(wèn),也能夠被不同包中的子類(lèi)訪問(wèn)。

  protected訪問(wèn)修飾符不能修飾類(lèi)和接口,方法和成員變量能夠聲明為protected,但是接口的成員變量和成員方法不能聲明為protected。

  子類(lèi)能訪問(wèn)protected修飾符聲明的方法和變量,這樣就能保護(hù)不相關(guān)的類(lèi)使用這些方法和變量。

  下面的父類(lèi)使用了protected訪問(wèn)修飾符,子類(lèi)重載了父類(lèi)的bark()方法。

  public class Dog{ protected void bark() { System.out.println("汪汪,不要過(guò)來(lái)"); }}class Teddy extends Dog{ /pic/p>

  如果把bark()方法聲明為private,那么除了Dog之外的類(lèi)將不能訪問(wèn)該方法。如果把bark()聲明為public,那么所有的類(lèi)都能夠訪問(wèn)該方法。如果我們只想讓該方法對(duì)其所在類(lèi)的子類(lèi)可見(jiàn),則將該方法聲明為protected。

  private:私有的

  私有訪問(wèn)修飾符是最嚴(yán)格的訪問(wèn)級(jí)別,所以被聲明為private的方法、變量和構(gòu)造方法只能被所屬類(lèi)訪問(wèn),并且類(lèi)和接口不能聲明為private。

  聲明為私有訪問(wèn)類(lèi)型的變量只能通過(guò)類(lèi)中公共的Getter/Setter方法被外部類(lèi)訪問(wèn)。

  private訪問(wèn)修飾符的使用主要用來(lái)隱藏類(lèi)的實(shí)現(xiàn)細(xì)節(jié)和保護(hù)類(lèi)的數(shù)據(jù)。

  下面的類(lèi)使用了私有訪問(wèn)修飾符:

  public class Dog{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}

  例子中,Dog類(lèi)中的name、age變量為私有變量,所以其他類(lèi)不能直接得到和設(shè)置該變量的值。為了使其他類(lèi)能夠操作該變量,定義了兩對(duì)public方法,getName()/setName() 和 getAge()/setAge(),它們用來(lái)獲取和設(shè)置私有變量的值。

  this 是Java中的一個(gè)關(guān)鍵字,本章會(huì)講到,你可以點(diǎn)擊 Java this關(guān)鍵字詳解 預(yù)覽。

  在類(lèi)中定義訪問(wèn)私有變量的方法,習(xí)慣上是這樣命名的:在變量名稱(chēng)前面加“get”或“set”,并將變量的首字母大寫(xiě)。例如,獲取私有變量 name 的方法為 getName(),設(shè)置 name 的方法為 setName()。這些方法經(jīng)常使用,也有了特定的稱(chēng)呼,稱(chēng)為 Getter 和 Setter 方法。

  默認(rèn)的:不使用任何關(guān)鍵字

  不使用任何修飾符聲明的屬性和方法,對(duì)同一個(gè)包內(nèi)的類(lèi)是可見(jiàn)的。接口里的變量都隱式聲明為public static final,而接口里的方法默認(rèn)情況下訪問(wèn)權(quán)限為public。

  如下例所示,類(lèi)、變量和方法的定義沒(méi)有使用任何修飾符:

  class Dog{ String name; int age; void bark(){ /pic/pic/p>

  訪問(wèn)控制和繼承

  請(qǐng)注意以下方法繼承(不了解繼承概念的讀者可以跳過(guò)這里,或者點(diǎn)擊 Java繼承和多態(tài) 預(yù)覽)的規(guī)則:

  父類(lèi)中聲明為public的方法在子類(lèi)中也必須為public。

  父類(lèi)中聲明為protected的方法在子類(lèi)中要么聲明為protected,要么聲明為public。不能聲明為private。

  父類(lèi)中默認(rèn)修飾符聲明的方法,能夠在子類(lèi)中聲明為private。

  父類(lèi)中聲明為private的方法,不能夠被繼承。

  如何使用訪問(wèn)控制符

  訪問(wèn)控制符可以讓我們很方便的控制代碼的權(quán)限:

  當(dāng)需要讓自己編寫(xiě)的類(lèi)被所有的其他類(lèi)訪問(wèn)時(shí),就可以將類(lèi)的訪問(wèn)控制符聲明為 public。

  當(dāng)需要讓自己的類(lèi)只能被自己的包中的類(lèi)訪問(wèn)時(shí),就可以省略訪問(wèn)控制符。

  當(dāng)需要控制一個(gè)類(lèi)中的成員數(shù)據(jù)時(shí),可以將這個(gè)類(lèi)中的成員數(shù)據(jù)訪問(wèn)控制符設(shè)置為 public、protected,或者省略。

  Java變量的作用域

  在Java中,變量的作用域分為四個(gè)級(jí)別:類(lèi)級(jí)、對(duì)象實(shí)例級(jí)、方法級(jí)、塊級(jí)。

  類(lèi)級(jí)變量又稱(chēng)全局級(jí)變量或靜態(tài)變量,需要使用static關(guān)鍵字修飾,你可以與 C/C++ 中的 static 變量對(duì)比學(xué)習(xí)。類(lèi)級(jí)變量在類(lèi)定義后就已經(jīng)存在,占用內(nèi)存空間,可以通過(guò)類(lèi)名來(lái)訪問(wèn),不需要實(shí)例化。

  對(duì)象實(shí)例級(jí)變量就是成員變量,實(shí)例化后才會(huì)分配內(nèi)存空間,才能訪問(wèn)。

  方法級(jí)變量就是在方法內(nèi)部定義的變量,就是局部變量。

  塊級(jí)變量就是定義在一個(gè)塊內(nèi)部的變量,變量的生存周期就是這個(gè)塊,出了這個(gè)塊就消失了,比如 if、for 語(yǔ)句的塊。塊是指由大括號(hào)包圍的代碼,例如:

  { int age = 3; String name = "www.weixueyuan.net"; /pic/pic/p>

  說(shuō)明:

  方法內(nèi)部除了能訪問(wèn)方法級(jí)的變量,還可以訪問(wèn)類(lèi)級(jí)和實(shí)例級(jí)的變量。

  塊內(nèi)部能夠訪問(wèn)類(lèi)級(jí)、實(shí)例級(jí)變量,如果塊被包含在方法內(nèi)部,它還可以訪問(wèn)方法級(jí)的變量。

  方法級(jí)和塊級(jí)的變量必須被顯示地初始化,否則不能訪問(wèn)。

  演示代碼:

  public class Demo{public static String name = "微學(xué)苑"; /pic/pic/pic/pic/pic/pic/pic/pic/pic/p>

  運(yùn)行結(jié)果:

  微學(xué)苑name=微學(xué)苑, i=0, j=3

【Java的訪問(wèn)修飾符與變量的作用】相關(guān)文章:

訪問(wèn)java1.5環(huán)境變量03-05

關(guān)于Java 的修飾符11-08

Java final 修飾符03-18

Java 變量類(lèi)型02-28

Java的特殊變量09-02

淺析php變量修飾符static的使用02-11

Java常量和變量03-17

Java 變量類(lèi)型介紹03-18

關(guān)于java的訪問(wèn)控制02-26