一、封裝
java是面向對象的語言,為了讓類的內部數據不被隨意的訪問修改,我們會用訪問修飾符對其被訪問權限進行修飾。例如我們經常看見的實體類。里面的成員變量我們就是用private修飾符進行修飾,然后提供getter、setter方法,這樣外部就不能直接訪問該類的成員變量了,只能通過get、set方法訪問。總的來說封裝就是我們用權限修飾符private對其方法和成員變量進行修飾,不讓外部隨意訪問。
權限訪問修飾符 | 類 | 包 | 子類 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default(不寫時默認值) | √ | √ | ||
private | √ |
二、繼承
java中用extends表示繼承的關系,如:public class Student extends Person{......} 父類:Person、子類:Student
那子類能繼承父類那些東西呢?
- 子類能繼承父類所有public和protected修飾的成員變量和成員方法。用private修飾的不能繼承。
- default修飾(不寫修飾符默認為default)的成員變量和成員方法,如果之類和父類同包,則能繼承。否則不能繼承。
- 如果出現子類和父類成員變量名或成員方法名相同的情況,父類的成員變量會被人隱藏,父類的成員方法會被覆蓋。只能同過super關鍵字引用。(隱藏和覆蓋是不相同的)
例子:
public class Inherit { public static void main(String[] args) { Person2 student = new Student("小王"); student.getMessge(); } } class Person2{ public String name; public Person2(){ System.out.println("Nothing!"); } public void getMessge(){ System.out.println("class Person"); } } class Student extends Person2{ public String name; public void getMessge(){ System.out.println("class student"); } public Student(String name){ super(); System.out.println(name+" is a student!"); } }
結果:
Nothing!
小王 is a student!
class student
子類和父類的初始化順序:
-
- 父類靜態變量
- 父類靜初始化塊
- 子類靜態變量
- 子類靜初始化塊
- 父類非靜態變量
- 父類非靜初始化塊
- 父類構造器
- 子類非靜態變量
- 子類非靜初始化塊
- 子類構造器
三、多態
https://www.cnblogs.com/chenssy/p/3372798.html
參考資料:http://www.cnblogs.com/Qian123/p/6868437.html
百度文庫:http://wenku.baidu.com/view/73f66f92daef5ef7ba0d3c03.html