小閆陪你入門 Java (二)
- 2019 年 10 月 5 日
- 筆記
意氣風發啊騎上我快樂的小摩托良心公眾號啊!我上牆了你開始了嚯嚯嚯嚯嚯哈哈哈哈哈皮皮蝦我們走可樂在廚房 紅牛在冰箱6666666

看彈幕,點關注

"
A goal should scare you a little, and excite you a lot.
——Joe Vitale
一個目標應該稍微有點嚇人,更多的應該是令人興奮。
"
Java 基礎
前文回顧『小閆陪你入門 Java (一)』
5.常量
Java 中設置常量有些特殊,並不像 Python 中直接賦值即可,需要利用關鍵字 final 指示。如下:
final double CONSTANT = 2.65
注意:使用關鍵字 final 修飾的常量不能被修改,只能用一次。而且常量名一般全使用大寫。
與變數一致,常量也可以設置類常量,將其定義在 main
方法的外部,可以供類內所有方法使用。形式如下:
public static final double CONSTANT = 2.65
const 是 Java 保留的關鍵字,因此自己不可使用。
6.Java 修飾符
Java 的修飾符是用來定義類、方法或者變數的關鍵字,通常放在語句的最前端。主要分為兩類,一類是訪問修飾符,一類是非訪問修飾符。
6.1 訪問控制修飾符
default:此修飾符為默認訪問修飾符(不使用修飾符的情況下,默認為此修飾符)。使用默認訪問修飾符聲明的變數和方法,對在同一個包內的類是可以使用訪問的。同時,此介面中的變數都默認聲明為 publicstaticfinal
,方法則默認許可權為 public
。
String version = "1.1.0"; boolean processOrder() { return true; }
private:此修飾符為私有訪問修飾符。它聲明的方法、構造方法和變數都只能被所在的類內訪問。聲明為私有訪問類型的變數只能通過類中公共的 getter
方法被外部類訪問,而且類和介面不能聲明為 private
。
私有訪問修飾符是為了安全起見,保護私有內容不被訪問,從而泄漏程式碼。
public:此修飾符為公有訪問修飾符。被它聲明的類、方法、構造方法和介面都能被其他任何類訪問。如果需要使用其他包內的類,那麼就需要導入了。還有一點,類所有的公有方法,都如同 Python 一樣,可以被其子類繼承。
Java 中的 main() 方法必須設置成共有的,否則解釋器不能運行。
protected:此修飾符為受保護的訪問修飾符。此修飾符需分兩種情況來分析說明:第一種是子類和基類在同一個包中時,包中的類可以訪問任何聲明為 protected 的方法、構造器和變數等;第二種是子類和基類不在同一包中時,子類實例對象可以訪問其從基類繼承的被聲明為 protected 方法,而不能訪問基類實例對象的 protected 方法。有點繞,好好理解一下。
protected 可以修飾數據成員、構造方法和方法,但是不能修飾類,當然,內部類不算。介面和介面的成員變數以及成員方法不能聲明為 protected。
詳解可看文章https://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html
訪問控制和繼承
1.父類中聲明為 public 的方法在子類中也必須為 public。
2.父類中聲明為 protected 的方法在子類中要麼聲明為 protected,要麼聲明為 public,不能聲明為 private。
3.父類中聲明為 private 的方法,不能夠被繼承。
6.2 非訪問修飾符
1. static
修飾符,用來修飾類方法和類變數。
2. final
修飾符,用來修飾類、方法和變數。final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變數為常量,是不可修改的。
final 修飾符通常和 static 修飾符一起使用來創建類常量。
3. abstract
修飾符,用來創建抽象類和抽象方法。
一個類不能同時被 abstract 和 final 修飾。如果一個類包含抽象方法,那麼該類一定要聲明為抽象類,否則將出現編譯錯誤。
4. synchronized
和 volatile
修飾符,主要用於執行緒的編程。
synchronized 關鍵字聲明的方法同一時間只能被一個執行緒訪問。synchronized 修飾符可以應用於四個訪問修飾符。 序列化的對象包含被 transient 修飾的實例變數時,java 虛擬機(JVM)跳過該特定的變數。 volatile 修飾的成員變數在每次被執行緒訪問時,都強制從共享記憶體中重新讀取該成員變數的值。而且,當成員變數發生變化時,會強制執行緒將變化值回寫到共享記憶體。這樣在任何時刻,兩個不同的執行緒總是看到某個成員變數的同一個值。
抽象類和抽象方法
抽象類顧名思義,是抽象的,不能創建實例對象。它存活的唯一理由就是為了將來對該類進行擴充。抽象類中可以包含抽象方法也可以包含非抽象方法。如果一個類包含若干個抽象方法,那麼該類必須聲明為抽象類。抽象類可以不包含抽象方法。
抽象方法就是沒有實現,只是有這麼個方法,具體實現在子類中書寫。抽象方法不能被聲明成 final 和 static。任何繼承抽象類的子類必須實現父類的所有抽象方法,除非該子類也是抽象類。抽象方法的聲明以分號結尾,例如:
public abstract sample();