final代表最後的,最終的
可以用來修飾,類、方法、變數
被final修飾的類,不能被繼承,太監了(不能有子類)
final不能和abstract共用
不能被子類覆蓋重寫,但是可以過載
區域性變數(定義引數的位置,方法中的變數,靜態**塊)
一旦賦值就不能再賦值,即使賦值相同
成員變數在類中方法外;成員變數有預設值
加final需要在構造方法中進行賦值,或者直接賦值
final修飾的靜態常量名要大寫,多個單詞間用_隔開
變數為引用型別,加上final,只能賦值一次,但可以修改物件的內容
前提在乙個專案中
public 公有的:任何地方都可以進行訪問publicprotected 受保護的:同包可以訪問,不同包的子類也可以訪問
default空 預設的:同包可以訪問
private 私有的:只有本類可以訪問
protected
default(空的)
private
同一類中√√
√同一包中(子類與無關類)√√
√不同包的子類√√
不同包中的無關類√
可見,public具有最大許可權。private則是最小許可權。
乙個類a中定義另乙個類b
有了內部類才可以更好物件導向,用類描述事物
public
class
a}
內部類在類中方法外
public
class
a }
public
void
methoda()
}
使用(建立內部類的物件)
外部類名.內部類名 物件名 = new 外部類名().new 內部類();
a.b 物件名 = new a().new b();
this.變數名;//內部類訪問當前類中的成員變數
外部類名.this.變數名;//內部類訪問外部類成員變數
定義在類中方法中
public
class 外部類名}}
只能在方法中使用,在開發中很少用
匿名內部類必須繼承乙個父類或者實現乙個父介面
為了簡化**
格式
new 抽象類/介面().成員方法名();
開發中會給new的物件賦值乙個變數,表示起了乙個名字,直接使用變數名.方法名呼叫重寫的方法
開發中,new 介面名再使用alt+enter快捷鍵快速生成匿名內部類
內部類訪問許可權
內部類 一種隱藏和組織 的模式 1 普通內部類擁有其外圍類的所有元素的訪問權,沒有任何限制 2 靜態內部類只能訪問外部類的靜態成員變數 class outer 3 定義在方法和作用域內的內部類,可以訪問方法和作用域外的變數,作用域內的變數必須是final型別的,因為生命週期不同。外部不能訪問該內部類...
final 許可權 內部類
代表最終不可變的。用法 1 用來修飾乙個類 不能有子類,所以其中所有的方法都不嗯呢該被覆蓋重寫。2 用來修飾乙個方法 方法不能被覆蓋重寫。3 用來修飾乙個區域性變數 variable 一次賦值,終生不變。4 用來修飾乙個成員變數 一次賦值,終生不變。沒有預設值需要手動賦值。final修飾的類又叫 太...
內部類,匿名內部類,許可權修飾符
二.匿名內部類 三.許可權修飾符 public class a 格式 外部類物件.內部類物件 物件名 new 外部類物件.new 內部類物件 不使用匿名內部類呼叫抽象物件中的方法 建立子類,繼承父類 重寫方法 建立子類物件 呼叫重寫方法 使用匿名內部類 無需建立子類直接new父類即可 格式一 new...