day11_學習總結
API文檔制作
dos控制台輸入指令
javadoc -d 目錄名 -author -version 類名.java
當定義一個工具類,對類的無參構造方法私有化,通過設定靜态方法來調用方法
代碼塊
局部代碼塊:方法中使用
構造代碼塊:類中方法外
格式:{代碼}
特點:類加載時優先加載構造代碼塊,再加載構造方法
靜态代碼塊:類中方法外
格式:static{代碼}
特點:随着類的加載而加載,類就加載一次,靜态代碼塊隻加載一次
優先級
靜态代碼塊 > 構造代碼塊 > 局部代碼塊
class Student{
public Student(){
System.out.println("這是一個無參構造代方法");
}
public Student(String name){
System.out.println("這是一個有參構造代方法");
{
System.out.println("這是一個構造代碼塊1");
}
static{
System.out.println("這是一個靜态代碼塊");
}
{
System.out.println("這是一個構造代碼塊2");
}
}
public class StudentTest{
public static void amin(String[] args){
{
System.out.println("這是一個局部代碼塊");
}
Student s = new Student();
Student s1 = new Student("tom");
}
}
結果為:
這是一個局部代碼塊
這是一個靜态代碼塊
這是一個構造代碼塊1
這是一個構造代碼塊2
這是一個無參構造代方法
這是一個構造代碼塊1
這是一個構造代碼塊2
這是一個有參構造代方法
首先加載StudentTest類,運作main方法,執行局部代碼塊,然後加載Student類,運作靜态代碼塊且隻執行一次,輸出構造代碼塊1--->構造代碼塊2--->無參構造方法;建立是s1對象,輸出構造代碼塊1--->構造代碼塊2--->有參構造方法
繼承概念—extends
将多個類的相同屬性及行為抽取出來,形成一個類,而這個類與這些類的關系稱為繼承,這個類具有多個類共有的特征和行為
繼承的優點
1)提高了代碼的複用性
2)提高了代碼的維護性,容易修改
3)類和類的關系---多态的前提
繼承的注意事項
1)繼承關系中,子類繼承父類,并且隻能繼承非私有的成員,私有化的成員不能繼承,需要通過定義公共的通路方法來繼承
2)子類繼承父類,構造方法不能繼承,不論時有參還是無參的構造方法,需要通過super()調用構造方法
3)不能為了使用部分繼承的功能而使用繼承
4)繼承隻能單繼承,多層繼承,不能同時繼承多個父類
this和super的差別?
this:表示目前類的對象的位址值引用
this.變量名;//通路目前類成員變量
this.成員方法();//通路目前類成員方法
this();//通路目前類的無參構造方法
this(xxx);//通路目前類的有參構造方法
super:通路繼承中父對象時需要使用super()
super.變量名;//通路父類成員變量
super.成員方法();//通路父類成員方法
super();//通路父類的無參構造方法
super(xxx);//通路父類的有參構造方法
繼承中成員變量的通路問題
繼承中在子類中在通路變量時,先在局部位置中找,找不到則在子類的成員變量中找,如果還找不到,繼續在父類中的成員變量找,如果還找不到,則報錯
繼承中構造方法的通路問題
1)子類繼承父類,子類所有的構造方法都會預設通路父類的無參構造方法,是以,父類的無參構造方法必須定義出來
2)在子類中的構造方法中預設會執行super();
注:為什麼在建立對象時,要通路父類的構造方法
因為在建立對象時,需要對子類進行初始化,可能會使用到父類的資料,是以必須通路父類的構造方法,對父類的成員進行初始化
分層初始化:先讓父類初始化,然後在是子類
繼承中成員方法的通路
繼承中子類隻能通路公共的通路方法