一、訪問修飾符
1.1 private訪問控制符
當前類訪問權限
如果一個成員方法或成員變數名前 使用了 private 訪問控制符,那么這個成員只能在這個類的內部使用,
1.2 default 訪問控制符
包訪問權限(默認)
default訪問控制的成員或外部類可以被相同包下的其他類訪問;default不能修飾變數,
1.3 protected 訪問控制符
子類訪問權限
基類的 protected 成員是包內可見的,并且對子類可見;
若子類與基類不在同一包中,那么在子類中,子類實體可以訪問其從基類繼承而來的protected方法,而不能訪問基類實體的protected方法,
1.4 public 訪問控制符
公共訪問權限
可以 被所有的類訪問,不管訪問類與被訪問類是否在同一個包中,
二、非訪問修飾符
2.1 static修飾符
用來修飾類方法和類變數,static的真正作用就是用于區分Field、方法、內部類、初始化塊這四種成員到底屬于類本身還是屬于實體,
2.1.1特點
- static修飾的變數屬于類變數,多個物件共享同一個static變數;
- static修飾的方法屬于靜態方法,靜態方法不能重寫(不屬于某個物件),不能使用this關鍵字(無法指向合適的物件);
- 可以直接通過“類名 . 屬性/方法”的方式訪問靜態屬性和靜態方法,不需要創建類的物件;
- 靜態成員不能直接訪問非靜態成員,靜態成員屬于類,不需要生成物件就存在了,而非靜態需要生成物件才產生. 所以靜態成員不能直接訪問
2.2 final修飾符
意思是最終的、不可修改的,最見不得變化,用來修飾類、方法和變數
2.2.1特點
- final修飾的類不能被繼承,final類中的所有成員方法都會被隱式地指定為final方法;
- final修飾的方法不能被重寫;
- final修飾的變數是常量,如果是基本資料型別的變數,則其數值一旦在初始化之后便不能更改;如果是參考型別的變數,則在對其初始化之后便不能再讓其指向另一個物件,
2.3 abstract修飾符
abstract 修飾符,用來創建抽象類和抽象方法,
2.3.1特點
- abstract修飾的類是抽象類,抽象類可以繼承別的普通類或抽象類,也可以實作介面,但抽象類不可以實體化;
- abstract修飾的方法是抽象方法,抽象方法沒有方法體;
- 抽象類不一定有抽象方法,有抽象方法的類必須是抽象類;
三、jdk1.8的介面中default修飾的方法
介面里的變數默認隱含型別是public static final
? 方法默認型別是public abstract
在1.8中,對已有的介面,如果想對介面增加一個新方法,那么需要對實作該介面的所有類進行修改,如果介面實的現類很多,就會帶來
很大的作業量,而且還很容易破壞以前的代碼,帶來一些問題,如果把新的方法定義為default方法,就可以避免對其他實作類的修改,
新增了default方法,如果方法前面加上該修飾符,則實作類并不是必須實作該方法,并且在介面中,還可以直接撰寫該方法的方法體,
當然子類也可以重寫該方法,
注意:
-
當多個介面中有同一個用default修飾的方法時,就無法判斷到底實作的是哪個介面的方法,這種情況下,就必須重寫方法,
-
一個類繼承的父類和實作的介面中都有同一個方法,而這個類又沒有重寫時,實作的是父類的方法,而不是介面中的方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/296714.html
標籤:Java
上一篇:面試官問我MySQL索引,我
下一篇:并發編程之:Atomic
