跟着阿里學JavaDay07——Java基礎語法(五)

我們後面的筆記我,打算直接用程序,加註釋進行記錄。日後若本人有疑問,可進行網絡查詢加以整理回復

package com.cionda.JavaDemo.dept;

public class JavaDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        dept department = new dept("004","張三");//聲明並實例化對象
        System.out.println(department.deptInfo());//引用對象中的deptInfo方法,並打印返回值    
        System.out.println(new dept("003","李四","北京").deptInfo());//這裡打印的是匿名對象中的deptInfo方法,使用完畢後,匿名對象即成為垃圾
        //我們可以嘗試再次打印department.deptInfo
        System.out.println(department.deptInfo());
    }
}
package com.cionda.JavaDemo.dept;
/**
 * 
 * @author CionDa * 
 *
 */
public class dept {//創建部門類
    /***
     * 日常開發中,我們的成員變量都要用關鍵字private進行保護
     * 成員變量是寫在類裏面的
     * 而局部變量是寫在方法體裏面的
     */
    private String deptno;//員工ID編號
    private String deptname;//員工名字
    private String deptloc;//部門地點
    public dept() {//構造方法
        /***
         * 1、構造方法的名稱必須和所在的類名稱完全一樣,就連大小寫也要一樣。
         * 2、構造方法不要寫返回值類型,連void都不寫。
         * 3、構造方法不能return一個具體的返回值。
         * 4、如果沒有編寫任何構造方法,那麼編譯器將默認會贈送一個構造方法,沒有參數、方法體什麼事情都不會做。
         * 5、一旦編寫了至少一個構造方法,那麼編譯器將不再贈送。
         */
        this(null,null,null);//減少代碼的重複性,調用形參最多的一個構造方法來使用
    }
    public dept(String deptno,String deptname) {//構造方法重載
        /***
         * (1)概述方法名相同,與返回值類型無關(構造方法沒有返回值),只看參數列表
         * (2)注意事項
         * 如果沒有給出構造方法,系統將自動提供一個構造方法
         * 如果給了構造方法,系統將不再提供構造方法
         * 所以最好一直寫出無參構造方法public dept()
         */
        this(deptno,deptname,null);
    }
    public dept(String deptno,String deptname,String deptloc) {//這是一個形參最多的一個構造方法
        this.deptno = deptno;//this關鍵字指向的是同一個類中的對象
        /***
         * 如果這裡我們不用this
         * 我們的編譯器會誤認為,等號左邊和右邊是同一個對象,輸出所有結果為null
         * 為了驗證,我們可以拷貝代碼進行修改
         * 
         * 我們的this關鍵字,這裡還可以指向同一個類中的方法
         * 例如:上面兩個構造方法調用這個構造方法一樣
         * 注意:
         * 我們在調用this關鍵字使用方法時避免進入死循環
         * 例如:
         * public dept() {
         *         this(null,null,null);
         * }
         * public dept(String deptno,String deptname,String deptloc) {
         *         this();
         * }
         * 這樣會造成兩個方法相互調用,沒有停止值,特別是構造方法。沒有返回值。最容易進入死循環
         */
        this.deptname = deptname;
        this.deptloc = deptloc;
    }
    
    public String deptInfo() {
        return "員工號:"+this.deptno+"\n員工名字:"+this.deptname+"\n部門地址:"+this.deptloc;
    }
    /***
     * ①我們可以在構造方法里進行對象的賦值
     * ②也可以用getter,setter來進行對象的賦值
     * 例如以下代碼段。
     * 構造函數是用於初始化類的屬性,且只有在創建對象時才會調用構造函數,用於給對象分配地址
     * 無參的構造函數,創建對象時默認調用,當程序沒有明確寫出有參的構造函數,系統會默認的創建一個。
     * 有參的構造函數,創建對象時傳進參數。
     * setter方法,是對象引用調用setter方法,並傳入參數。
     * getter方法,對象調用getter方法,獲取對象屬性的值。
     * 區別:
     * 構造方法只有在創建對象時才會被「系統」調用且只調用一次, 而getter和setter方法是隨時可以被「對象」調用
     * 構造方法不能獲取對象屬性的值, 而getter可以獲取對象的屬性值
     */
//    public String getDeptno() {
//        return deptno;
//    }
//    public void setDeptno(String deptno) {
//        this.deptno = deptno;
//    }
//    public String getDeptname() {
//        return deptname;
//    }
//    public void setDeptname(String deptname) {
//        this.deptname = deptname;
//    }
//    public String getDeptloc() {
//        return deptloc;
//    }
//    public void setDeptloc(String deptloc) {
//        this.deptloc = deptloc;
//    }
}

感謝阿里雲開發者社區,讓我有整套系統的Java學習教程

同時,感謝博客園,讓我有一個免費的博客,並讓我做筆記學習!!

 

Tags: