JAVA-(構(gòu)造方法、setter/getter方法、this指針、static)


心得體會(huì)

  • 似乎自己真的不夠努力,因?yàn)椴粔蚺Γ陨险n不能很好的吸收當(dāng)天的知識(shí),java對我來說真的挺難的,好像至今我還深陷于c語言的思維無法自拔。但是,實(shí)際說,我覺得java要更加有趣一點(diǎn),寫一個(gè)demo前進(jìn)行一次邏輯分析,挺有用的,能讓自己編程的思路更加清晰一點(diǎn)。

技術(shù)

  • 1.給對象賦值的方式
  • 2.setter/getter方法
  • 3.構(gòu)造方法
  • 4.變量作用域
  • 5.this指針
  • 6.static

具體操作

1.給對象賦值的方式

  • a.對于public修飾的屬性 使用對象直接調(diào)用
    p.number='A';

  • b.對于private修飾的屬性 不能直接調(diào)用 只能間接使用,可以用
    getter/setter方法構(gòu)造方法
  • 2.setter/getter方法
class Poker{
    private String number;
    private String color;
    
    public boolean bigerThen(String number) {//比較大小
        return true;
    }
    //什么時(shí)候用this
    //需要明確指定調(diào)用的是自己對象的方法
    public void t1(int... ages){
        bigerThen(null);
        this.bigerThen(null);
    }

上圖中的number、color屬性由private修飾,不能直接調(diào)用,只能間接調(diào)用

 //給外部提供一個(gè)set方法 通過這個(gè)方法間接給number賦值
 //可以對外部給的值進(jìn)行控制

 public void setNumber(String num){
       number=num;
    }
 //給外部提供一個(gè)get方法 訪問某個(gè)變量的值
 public String getNumber(){
        return "number";
    }
 public void setColor(String color) {
        this.color = color;
    }
 public String getColor() {
        return color;
    }
  • 上圖中給外部提供一個(gè)set方法 通過這個(gè)方法間接給number,color賦
    值,可以對外部給的值進(jìn)行控制,
  • 給外部提供一個(gè)get方法 訪問某個(gè)變量的值
  • 通過setter/getter方法,于是poker類中的成員屬性number,color可以在外部間接調(diào)用
public class Test {
    public static void main(String[] args){
       Poker p=new Poker();//創(chuàng)建對象
       p.setNumber("jacker");
       System.out.println(p.getNumber());
     }
}
QQ截圖20190807211149.png

注意:通常setter/getter方法不需要手動(dòng)添加,可以通過系統(tǒng)直接添加。首先把光標(biāo)放在setter/getter方法要添加的位置,然后快捷鍵Alt+Insert。(ps:我的電腦快捷鍵是這樣的,如果你的電腦快捷鍵不是這樣的,可以點(diǎn)擊code,然后看Generate,看一下快捷鍵是什么)

image.png

建議?。?!: 建議將setter/getter方法定義在類的最后面 避免干擾閱讀


3.構(gòu)造方法

  • a.構(gòu)造方法的定義

構(gòu)造方法:創(chuàng)建一個(gè)類的一個(gè)對象的時(shí)候 就會(huì)被調(diào)用的方法

  • b.類的默認(rèn)構(gòu)造方法
  • 創(chuàng)建一個(gè)類的具體對象
    Poker pp=new Poker();
  • 每個(gè)類會(huì)默認(rèn)提供一個(gè)構(gòu)造方法

1.無參數(shù)的默認(rèn)構(gòu)造方法

public Poker(){
    
        System.out.println("構(gòu)造方法");
    }

2.有參數(shù)的默認(rèn)構(gòu)造方法

public Poker(){
        number='2';
        color='?';
        System.out.println("構(gòu)造方法");
    }
public class Test {
    public static void main(String[] args){
        Poker pp=new Poker();
        System.out.println(pp.getNumber());
        System.out.println(pp.getColor());
    }
}
class Poker {
    private String number;
    private String color;
    //類的默認(rèn)構(gòu)造方法
    public Poker(){
        number="2";
        color="黑桃";
        System.out.println("構(gòu)造方法");

    }
   public boolean bigerThen(String number) {
        return true;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

}
QQ截圖20190807222610.png

為什么會(huì)打印上述結(jié)果:
因?yàn)?code>Poker pp=new Poker();這里創(chuàng)建了一個(gè)對象,創(chuàng)建這個(gè)對象它默認(rèn)會(huì)調(diào)用這個(gè)對象里面的默認(rèn)構(gòu)造方法,這個(gè)構(gòu)造方法里面先賦值,然后打印的System.out.println("構(gòu)造方法");這句話就會(huì)執(zhí)行完畢。執(zhí)行完畢,這個(gè)對象創(chuàng)建完畢,然后再調(diào)用
System.out.println(pp.getNumber());
System.out.println(pp.getColor());
方法,把“2”,“ 黑桃”打印出來

  • c.構(gòu)造方法的重載
    1.方法重載

同一個(gè)類里面有多個(gè)同名的方法 但是返回值或者參數(shù)不同
public int nextInt()
public int nextInt(int i);
這兩個(gè)方法方法名相同,但執(zhí)行的內(nèi)容不同,參數(shù)不同,返回值一樣,這就是重載

2.自定義的構(gòu)造方法

public class Test {
    public static void main(String[] args){
        Poker pp2=new Poker("k","?");
        System.out.println(pp2.getNumber());
        System.out.println(pp2.getColor());

        Poker pp3=new Poker("Q","?");
        System.out.println(pp3.getNumber());
        System.out.println(pp3.getColor());
    }
}
class Poker {
    private String number;
    private String color;

    //自定義的構(gòu)造方法
    public Poker(String num,String col){
        //調(diào)用
        number=num;
        this.color=col;
        System.out.println("自定義的構(gòu)造方法");
    }
   public boolean bigerThen(String number) {
        return true;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
QQ截圖20190807230318.png
  • 通常給一個(gè)屬性賦值 形參名盡量和屬性名一致
    變量在使用的時(shí)候有就近原則構(gòu)造方法的時(shí)候 這個(gè)對象在內(nèi)存里面已經(jīng)分配好了
  • d.什么時(shí)候使用構(gòu)造方法**

a.希望在對象創(chuàng)建的時(shí)候 做點(diǎn)其他事情
(這個(gè)時(shí)候用默認(rèn)的構(gòu)造方法就可以了,用自定義的構(gòu)造方法也是可以的)
b.在對象創(chuàng)建的時(shí)候 需要給屬性賦值
(這個(gè)時(shí)候需要寫一個(gè)自定義的構(gòu)造方法)

4.變量作用域

  • a.成員變量的作用域,從對象創(chuàng)建到對象銷毀
  • b.方法的變量作用域在這個(gè)方法內(nèi)部,出了這個(gè)方法就無法訪問
  • 變量在使用時(shí)有就近原則
 public Poker(String 
 number,String color){
        //調(diào)用
        number=number;//錯(cuò)誤?。?!

此時(shí)沒有賦值成功?。。?/p>

public Poker(String 
 num,String col){
        //調(diào)用
 number=num;

這是正確的

5.this指針

  • 什么時(shí)候用this

需要明確指定調(diào)用的是自己對象的方法

  public void t1(int... ages) {
        bigerThen(null);
        this.bigerThen(null);
     }

在構(gòu)造方法里面,這個(gè)this指的是創(chuàng)建的這個(gè)對象

   public Poker(String number,String color){
        //調(diào)用
       this.number=number;
       this.color=color;
        System.out.println("自定義的構(gòu)造方法");
    }

除構(gòu)造方法的任意一個(gè)方法里面調(diào)用this指的是 調(diào)用這個(gè)方法的對象

public void setColor(String color) {
this.color = color;
}

6.static

  • static 修飾的屬性和方法都會(huì)在對象創(chuàng)建之前優(yōu)先加載
  • 屬性 靜態(tài)屬性
    方法 靜態(tài)方法
    實(shí)例方法/對象方法:必須創(chuàng)建某一個(gè)對象才能調(diào)用的方法
    類方法/靜態(tài)方法: 不需要?jiǎng)?chuàng)建對象 直接用這個(gè)類來調(diào)用
class MyClass{
   public void test(){
       System.out.println("這是對象方法");
   }
   public  static void test2(){
       System.out.println("這是靜態(tài)方法");
   }
}
class T2{
   public static void main(String[] args){
       MyClass c1=new MyClass();//使用類的實(shí)例方法/對象方法
       c1.test();

       MyClass.test2();//使用類/靜態(tài)方法
}

什么情況下需要寫靜態(tài)方法:

  • 1.當(dāng)不需要記錄數(shù)據(jù)的時(shí)候 只關(guān)心功能就可以使用靜態(tài)方法
  • 2.注意:靜態(tài)方法里面不能調(diào)用靜態(tài)這個(gè)類里面的屬性和非
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容