1.面向對象的特征:
(1)繼承:extends關鍵字實現父子類關系,子類可以用父類中的屬性和方法,也可以定義自己的屬性和方法,一個類可以有多個子類,但是一個類只能有一個父類
2.構造器:
創建子類對象時,首先會創建父類對象,
編譯器會在子類構造器的第一行默認加入super();調用父類的無參構造器,要調用父類中有參的構造器,必須用super(參數1,參數2...);
super(),必須寫在子類構造器的第一行。
3.重寫:發生在父子類之間,要求:方法名和參數列表一樣,方法實現不一樣
方法重寫和重載的區別:
重載:發生在同一個類中,方法名一樣,參數列表不一樣(參數類型,參數個數,參數順序不一樣)
重寫:發生在父子類之間,要求:方法名和參數列表一樣,方法實現不一樣
1.1方法重寫時,到底調用哪個方法根據對象的類型定,對象是什么類型就調用該類中的方法
1.2父子類中存在相同的屬性時,到底調用哪個類中的屬性,根據變量的類型來定,變量是什么類型,就調用哪個類的屬性
1.3如果想在子類中調用父類的屬性和方法用super關鍵字如:
super.f(),super.name;
如果想在子類中調用父類的構造器用,可以在子類的構造器的第一行寫super(參數(可有可無));
如果想在自己類中調用自己的構造器可以寫this()如:
(2)封裝
封裝:就是隱藏實現細節
(1)將屬性私有化,提供公有方法訪問私有屬性
(2)通過這些公有方法訪問私有屬性
封裝的實現:
(1)修改屬性的可見性來限制對屬性的訪問
(2)為每個屬性創建一對賦值(setter)方法和取值(getter)方法,用于對這些屬性的訪問
4.包(package):如果只是用類名來作為唯一標識的話,容易出現類名重復,為了解決類名重復的問題,可以定義包來區分
定義包的時候要在定義類之前,語法:
Package包名
包的命名規范:Java的包名都有小寫單詞組成
命名:com.公司名.項目名.模塊名
com.eduask.shoppingcart.login
(3)多態