修飾類只有public和default(也就是是不寫訪問修飾符) 修飾成員變數或成員方法時有四種 public 可以被任意包中的類訪問 protected 可以被同一包下的其他類訪問(包括同一包下的子類),其他包的子類可以訪問 default(也就是什麼都不寫) 可以被同一包下的其他類訪問(包括同一 ...
修飾類只有public和default(也就是是不寫訪問修飾符)
修飾成員變數或成員方法時有四種
public 可以被任意包中的類訪問
protected 可以被同一包下的其他類訪問(包括同一包下的子類),其他包的子類可以訪問
default(也就是什麼都不寫) 可以被同一包下的其他類訪問(包括同一包下的子類),其他包的子類無法訪問
private 僅自己能訪問
測試protected和default的區別
同一包下 他倆是一樣的 這是測試不同包下
測試protected 不同包下的子類是否能訪問父類中protected修飾的方法
package com.wz.text01.p1;
/**
* Created by IntelliJ IDEA.
*
* @author Donkey
* Date: 2022/4/15
* Time: 11:54
*/
public class TestProtected {
protected String name = "wz";
protected void show(){
System.out.println("TestProtected中的show方法");
}
}
此時只能new子類對象訪問
package com.wz.text01.p2;
import com.wz.text01.p1.TestProtected;
/**
* Created by IntelliJ IDEA.
*
* @author Donkey
* Date: 2022/4/15
* Time: 11:55
*/
public class Test extends TestProtected {
public static void main(String[] args) {
Test test = new Test();
test.show();
System.out.println(test.name);
}
}
並且不能使用多態,即 TestProtected test=new Test() 這樣會出錯
測試default 不同包下的子類是否能訪問父類中default(預設)的方法
package com.wz.text01.p2;
import com.wz.text01.p1.TestDefault;
/**
* Created by IntelliJ IDEA.
*
* @author Donkey
* Date: 2022/4/15
* Time: 12:09
*/
public class Test02 extends TestDefault {
public static void main(String[] args) {
Test02 test02 = new Test02();
test02.show();
}
}
成員變數和局部變數的區別
成員變數:
1.成員變數定義在類內,方法外,是屬於類的概念
2.成員變數都有預設的初始值
3.未被static修飾的成員變數也叫實例變數,存儲在堆記憶體中,生命周期與實例化的對象一致(也就是new對象的時候生成,gc回收對象的時候死亡)
4.被static修飾的成員變數也叫類變數,存儲在方法區記憶體中,生命周期與當前類一致
局部變數:
1.定義在類中方法內
2.沒有預設的初始值,需要手動賦初值
3.存儲在棧記憶體中,隨著方法結束而銷毀