语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)
語法基礎(三. 類,屬性,方法,方法重載,方法重寫,構造方法,訪問修飾符)
(如有錯誤,歡迎指正,感謝!)
類
類是面向對象的程序設計中的概念,實現信息的封裝
概念: 類就是擁有相等行為和相同的屬性的對象的集合。(是一種比較抽象的數據類型,稱為引用數據類型)
比如:人是一個類,具體到一個人,這個人就是一個對象,"名字,身高,體重"是這個對象的屬性;"吃飯,吃東西"這些行為就是對象的方法。
語法規范:
[訪問修飾符] class 類名{
}
類的三大特性:
1. 封裝性
2. 繼承性
3. 多態性
類比較抽象,是一個群體概念。
屬性
- 類或者對象具有的特征在程序中稱為屬性
語法規范:
[修飾符] 屬性類型 屬性名稱 [=默認值]
- 具體對象的屬性數據稱為屬性值。
- 同一類的不同對象,都具有相同的屬性,但各個對象都擁有各自的屬性值。
類中的三種屬性
方法(函數)
- 類或者對象的行為稱為方法
作用:
1. 用于定義功能。
2. 用于封裝代碼提高代碼的復用性。
語法規范:
[訪問修飾符] 返回值類型 方法名(參數列表){
方法體
}
類中的三種方法:
方法的重載
- 一個類中出現兩個或兩個以上同名方法,只要方法的參數,或者參數的類型不同,就可以說這個方法重載了(與返回值類型和訪問修飾符無關)。
- 構造方法,類方法,對象方法,final方法均可以被重載
方法的重寫
- 一般用于子類中,如果想要重寫父類的方法,實現不同的功能。
重寫規則:
重寫的方法必須與被重寫方法一模一樣(包括返回值類型)。
重寫方法的訪問修飾符,一定要大于等于被重寫方法的訪問修飾符
重寫方法拋出的異常必須和被重寫方法拋出的異常一致,或者是其子類異常
靜態方法不能被重寫,但是子類可以有同名的靜態方法。
final方法不能覆蓋重寫,如果各個子類也去覆蓋這個final方法,那父類的這個方法再用final修飾就沒啥意義了
//父類 public class A {public void a(){System.out.println("父類A");}protected void b(){System.out.println("父類B");}public static void c(){System.out.println("父類靜態方法C");} } //子類 public class B extends A {@Overridepublic void a(){System.out.println("子類重寫A");}/*@Overrideprivate void B(){ 重寫方法,訪問修飾符不能變小}*/@Overridepublic void c(){System.out.println("子類重寫B,訪問修飾符由protected改為public");}/*@Overridepublic static void c(){ 父類靜態方法不能被覆蓋重寫System.out.println("===");}*/public static void c(){System.out.println("子類同名方法");}}
構造方法
作用:
構造出來一個類的實例(實例化對象)
對構造出來個一個類的實例(對象)初始化。
語法規范:
[訪問修飾符] 類名(參數列表){
}
規則:
- 方法名與類名相同
- 可以有 0 個、1 個或多個參數
- 沒有任何返回值,包括 void
- 默認返回類型就是對象類型本身
- 只能與 new 運算符結合使用
- 構造方法不能被 static、final、abstract 等修飾。
注意:
-
構造方法的調用是在創建一個對象時,使用new操作自動進行的。
-
接口不允許被實例化,所以接口中沒有構造方法。
-
類中必定有構造方法,若不寫,系統自動添加無參的默認空構造方法
-
一旦手動定義了構造方法,默認的無參空構造方法就不再存在。
public class C {public C(int num){System.out.println(num);}public C(String string){System.out.println("=========");}public static void main(String[] args) {// C c=new C(); 報錯,默認空構造方法不再存在C c=new C("有參構造");} }
訪問修飾符
- Java的四個關鍵字:public、protected、default、private
(決定了修飾過的東西可以被誰使用)
| public | ∨ | ∨ | ∨ | ∨ |
| protected | ∨ | ∨ | ∨ | × |
| default | ∨ | ∨ | × | × |
| private | ∨ | × | × | × |
訪問權限范圍越小,安全性越高
-
public: 都可以隨意訪問
-
protected:包內可見,繼承該類的子類(即使該類在其它包)實例(對象)可以訪問,不然在其它包中相當于private權限
即便是父類對象本身,在其它包也無法訪問自己類中protected修飾的屬性或方法
-
default:在同一個包內均可被隨意訪問,其它包不可以
-
private: 除啦可以在自己的類中隨便訪問,其它任何地方都不能訪問
注意:
- 如果不添加訪問類型,默認為default
包結構: domo01—A(父類) demo02—B(子類)
public class A {public void a(String string){System.out.println("public修飾的a方法");}protected String b(String string){System.out.println("protected修飾的b方法");return string;}void c(String string){System.out.println("默認default修飾的c方法");}private void d(String string){System.out.println("private修飾的d方法");}}import demo01.A;public class B extends A{public static void main(String[] args) {A a=new A();B b=new B();b.a("public");b.b("protected"); //子類,父類不在同一個包,但是子類對象可以訪問// a.b("protected"); 即便是父類對象本身,在其它包也無法訪問自己類中protected修飾的屬性或方法// b.c("默認default"); 其它包不能訪問// b.d("private"); 其它包不能訪問}}
參考資料: https://www.cnblogs.com/yb38156/p/9599820.html
( 注:部分資料參考網絡,如有侵權請聯系。)
總結
以上是生活随笔為你收集整理的语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询部分
- 下一篇: Cartoon-Stylegan2:快来