1. 程式人生 > 實用技巧 >JAVA的學習日記13

JAVA的學習日記13

Java構造器

大佬部落格指路

定義宣告:
構造方法的名字必須和所在類的名字一致,沒有返回值,但不能宣告void,訪問許可權可以為任意,但是一般情況下使用public方法許可權,構造方法中的引數可以根據需要自行定義,引數的不同的構造方法構成過載;

package com.Test;

public class test {
    class Fu {
        public Fu(){} //無參的公有構造方法
        public Fu(int i){} //引數型別為int的公有構造方法
    }
    
    public class Demo extends Fu {
        public Demo(){} //無參的公有構造方法
        public Demo(int i){} //引數型別為int的公有構造方法
        public Demo(int i,double d){} //引數型別為int和double的公有構造方法
    }
}

構造方法的使用:
java中構造方法的使用有兩個地方,一個是跟在關鍵字new後面,類名加上一個小括號(),小括號內根據實際加上實參,另外一個是跟在關鍵字super或this後加上一個小括號(),小括號內根據實際新增實參

    Demo demo = new Demo(); //這裡是呼叫的是一個無參的構造方法,必須宣告在方法中,最好宣告在主方法
    //上面構造方法的引數根據實際新增實參,jvm根據構造方法的引數不同載入不同的構造方法;
    //2
    public Demo(){
        this(2); //這裡呼叫引數為int型別的本類的構造方法
    }
    //3
    public Demo(){
        super(1); //呼叫引數為int型別的父類的構造方法
    }

//    注意:2和3中this或super呼叫構造方法只能出現在構造方法中,而且必須出現在第一行,所以一個構造方法中第一行只能為this或super呼叫構造方法,兩者不能同時呼叫構造方法出現,而且注意this或super呼叫構造方法時,要留構造方法出口,意思就是最後呼叫的構造方法中沒有再呼叫別的構造方法!

構造方法的作用:
1.為了初始化成員屬性,而不是初始化物件,初始化物件是通過new關鍵字實現的
2.通過new呼叫構造方法初始化物件,編譯時根據引數簽名來檢查建構函式,稱為靜態聯編和編譯多型
(引數簽名:引數的型別,引數個數和引數順序)
3.建立子類物件會呼叫父類構造方法但不會建立父類物件,只是呼叫父類構造方法初始化父類成員屬性;

學習例項和實現

package com.oop.Demo02;

public class Person {
    //一個類即使什麼都不寫,它也會存在一個方法,這個時候稱構造器為隱式構造器

    String name;

    /*
    構造器的作用:
        1.使用new關鍵字,本質是在呼叫構造器
        2.例項化初始值


    IDEA中快捷鍵:alt+insert鍵,快速建立構造器
     */

    //顯式定義構造器
    //無參構造---例項化初始值
//    public Person(){
//        this.name = "cdoudou";
//    }


    //有參構造:一旦定義了有參構造,無參就必須顯式定義
//    public Person(String name){
//        this.name = name;
//    }





    //快捷鍵定義的構造器
//    public Person() {
//    }
//
//    public Person(String name) {
//        this.name = name;
//    }
}


/*
public static void main(String[] args) {
        //例項化了一個物件
        Person person = new Person();
}


    構造器:
        1.和類名相同
        2.沒有返回值
    作用:
        1、new本質在呼叫構造方法
        2、初始化物件的值
    注意點:
        1.定義有參構造之後,如果想要使用無參構造,需要顯式的定義一個無參的構造
 */

記憶體分析

package com.oop.Demo03;

public class Pet {
    public String name;
    public int age;


    public void shout(){
        System.out.println("叫");
    }
}

/*
public static void main(String[] args) {
        Pet dog = new Pet();

        dog.name = "旺財";
        dog.age = 5;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);

 */

小結

1.類與物件

  • 類是一個模板,物件是一個具體的例項

2.方法

  • 定義和呼叫

3.物件的引用

  • 引用型別:基本型別(8)
  • 物件是通過引用來操作:棧----堆

4.屬性:欄位Field 成員變數

  • 預設初始化:
    數字:0 0.0
    char:u0000
    boolean:false
    引用:null
    修飾符 屬性型別 屬性名 = 屬性值

5.物件的建立和使用

  • 必須使用new 關鍵字創造物件 構造器 Person doudou = new Person();
  • 物件的屬性 doudou.name
  • 物件的方法: doudou.sleep()

6.類:

  • 靜態的屬性:屬性
    動態的行為:方法
加油!!!馬上封裝、繼承和多型了!