JAVA的學習日記13
阿新 • • 發佈:2020-09-17
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.類:
- 靜態的屬性:屬性
動態的行為:方法