Java基礎知識關鍵字
定義:一些已經賦予了指定含義的詞語
根類相關:public private protected class interface implements extends import package abstract
根方法函數/屬性相關:void return static final
八大基礎資料型別 (Elementary Data Type):int short byte long char boolean double float
迴圈判斷:for switch do while break continue if case
異常:try catch throw throws finally
其他:this super
goto(保留字)
一、先來分析許可權修飾符:
建立如下結構進行實驗
1.public:整個工程隨意訪問,不管是跨類還是跨包
package text1;public class People {public String name;public void eat(){}}
package text2;import text1.People;public class Man {public static void main(String[] args) {People people = new People();people.name = " ";people.eat();}}
在包text1中定義了公有屬性name和方法eat,看到在包text2中可以被訪問調用,可以看出public的存取權限是非常大的
2.protected:同一個包下的類可以隨意訪問,跨包不行(跨包繼承是可以繼承到受保護的屬性或者方法)
package text1;public class People {public String name;protected String sex;public void eat(){}protected void drink(){}}
在People中定義protected屬性sex和方法drink
package text2;import text1.People;public class Man {public static void main(String[] args) {People people = new People();people.name = " ";people.eat();people.<del>sex</del> = " ";people.<del>drink</del>();}}
可以看到在Man中不能調用了,對於被protected修飾的屬性和方法,還有一種方式訪問
package text2;import text1.People;public class Woman extends People{public static void main(String[] args) {Woman people = new Woman();people.name = " ";people.eat();people.sex= " ";people.drink();}} 定義子類Woman繼承父類People,就可以用子類執行個體調用到父類的protected屬性和方法了。
3.預設不寫:同一個包下的類可以隨意訪問,跨包不行
package text1;public class People {int age;void play(){}}
<pre class="java" name="code">package text2;import text1.People;public class Woman extends People{public static void main(String[] args) {Woman people = new Woman();people.<del>age</del> = 18;people.<del>play</del>();}}
挎包繼承也不可以訪問預設修飾的屬性和方法
package text1;public class Student {public static void main(String[] args) {People people = new People();people.age = 18;people.play();}}
同一包下的其他類可以訪問到預設屬性和方法
4.private:僅限於當前類自己可以訪問,其他類擁有對象也無法訪問私人屬性/方法
package text1;public class People {private String address;private void sleep(){}public static void main(String[] args) {People people = new People();people.address = " ";people.sleep();}}
package text1;public class Student {public static void main(String[] args) {People people = new People();people.<del>address</del> = " ";people.<del>sleep</del>();}}
同包其他類調用私人屬性和方法報錯。
總結一個表:
存取修飾詞:public protected預設private四種類型存取權限
| |
當前類 |
當前包 |
子類 |
外部包 |
| public |
ok |
ok |
ok |
ok |
| protected |
ok |
ok |
ok |
|
| 預設 |
ok |
ok |
|
|
| private |
ok |
|
|
|
另外四大修飾符修飾的範圍:方法、屬性、類
而類只能用public和預設不寫來修飾
二、關鍵字命名
swith(){//int/short/ String(JDK1.7版本以前不能用) 枚舉類型
case **:break;
}
三、this\super的區別
this:當前類的對象
super:父類的對象
普通方法和屬性調用:this.方法名(),this.屬性名稱
this();
super.方法名(),super.屬性
super();
注意:1.this()和super()必須出現在第一行
2.方法重寫,如果要對父類的方法進行補充,則需要調用super.父類方法名()方法定義
四、final(最終的,最後的)
可以用來修飾:類、方法、屬性、參數、局部變數
修飾類:當前類不能被繼承
方法:當前方法不能被重寫
屬性:代表當前屬性只能被賦值一次(常量)
參數/局部變數:代表當前參數在生命週期範圍內不能重新賦值
五、static(靜態)
可以用來修飾:方法、屬性、靜態塊
注意一點:靜態方法中一定不能直接使用非靜態屬性或者方法