JAVA構(gòu)造方法/構(gòu)造器以及this使用方式
構(gòu)造方法/構(gòu)造器
基本語法
·[修飾符]方法名(形參列表){ 方法體; }
1.構(gòu)造器的修飾符可以默認,也可以是public protected private
2.構(gòu)造器沒有返回值
3.方法名和類名字必須一樣
4.參數(shù)列表和成員方法一樣的規(guī)則
5.構(gòu)造器的調(diào)用系統(tǒng)完成
基本介紹
1.方法名和類名相同
2.沒有返回值
3.在創(chuàng)建對象時,系統(tǒng)會自動調(diào)用該類的構(gòu)造器完成對象的初始化
4.構(gòu)造器是完成對象的初始化,并不是創(chuàng)建對象
5.在創(chuàng)建對象時,系統(tǒng)自動的調(diào)用該類的構(gòu)造方法
public class Main{ public static void main(String[] srgs){ Person p1 = new Person("king",40); Person p2 = new Person("tom"); } } //第一個構(gòu)造器 class Person{ public Person(String pName;int pAge){ name = pName; Age = pAge; } //第二個構(gòu)造器,只指定姓名,不指定年齡 public Person(String pName){ name = pName; } }
6.如果沒有定義構(gòu)造器,系統(tǒng)會自動生成一個默認的無參構(gòu)造器(也叫默認構(gòu)造器)比如Dog(){ },使用javap指令反編譯看看
7.一旦定義了自己的構(gòu)造器,默認的構(gòu)造器就覆蓋了,就不能再使用默認的無參構(gòu)造器,除非顯示的定義一下,即:Person(){ }
public class Main{ public static void main(String[] srgs){ Dog d = new Dog(); } } class Dog{ /**如果沒有定義構(gòu)造器,系統(tǒng)會自動生成一個默認的無參構(gòu)造器(也叫默認構(gòu)造器)比如Dog(){ },使用javap指令反編譯看看 // javap Dog.class 默認構(gòu)造器 Dog(){ } */ //一旦定義了自己的構(gòu)造器,默認的構(gòu)造器就覆蓋了,就不能再使用默認的無參構(gòu)造器,除非顯示的定義一下,即:Person(){ } public Dog(String pName){ ...... } }
this
public class Main{ public static void main(String[] srgs){ Dog d = new Dog("大壯",10); d1.info(); } } class Dog{ // 類 String nmae; int ang; public dog(String dName,int dAge){ name = dName; age = dAge; } //如果我們的構(gòu)造器的形參,能夠直接寫成屬性名,就更好 public void info(){//成員方法,輸出屬性+信息 System.out.println(name + "\t" + age + "\t"); } }
問題:
構(gòu)造方法的輸入?yún)?shù)名不是非常的好,如果能夠?qū)Name改成name就好了,
但是我們會發(fā)現(xiàn)按照變量的作用域原則,name的值就是null,怎么解決
引出->this
public class Main{ public static void main(String[] srgs){ Dog d = new Dog("大壯",10); d1.info(); } } class Dog{ // 類 String nmae; int ang; //構(gòu)造器的name和age是局部變量不是屬性 public dog(String name,int age){ //this.name就是當前對象屬性nmae this.name = name; //this.age就是當前對象屬性age this.age = age; } public void info(){//成員方法,輸出屬性+信息 System.out.println(name + "\t" + age + "\t"); } }
this的注意事項和使用細節(jié)
1.this關(guān)鍵字可以用來訪問本類的屬性、方法、構(gòu)造器
2. this用于區(qū)分當前類的屬性和局部變量
3. 訪問成員方法的語法:this.方法名(參數(shù)列表);
4. 訪問構(gòu)造器語法:this(參數(shù)列表);注意只能在構(gòu)造器中使用
5. this不能在類定義的外部使用,只能在類定義的方法中使用。
public class Main{ public static void main(String[] srgs){ T t = new T(); t.f2(); } } class T{ /* 注意:訪問構(gòu)造器語法:this(參數(shù)列表); 必須放置第一條語句 */ public T(){ //這里去訪問T(String name,int age)構(gòu)造器 this("jack",1000); System.out.println("T()構(gòu)造器"); } public T(String name,int age){ System.out.println("T(String name,int age)構(gòu)造器"); } public void f1(){ System.out.println("f1()方法.."); } public void f2(){ System.out.println("f2()方法.."); //調(diào)用本類的 f1 //第一種方法 f1(); //第二種方法 this.f1(); } }
例題
定義Person類,里面有name、age屬性,并提供compareTo比較方法,用于判斷·是否和另一個人相等,提供測試類Main用于測試,名字和年齡完全一樣,就返回true,否則返回false
public class Main{ public static void main(String[] srgs){ Person p = new Person("mary",20); Person p = new Person("smith",30); System.out.println(p1.compareTo(p2)); } } class Person{ String name; int age; //構(gòu)造器 public Person(String name,int age){ this.name = name; this.age = age; } //compareTo方法 public Boolean compareTo(Person p){ if(this.name.equals(p.name)&&this.age == p.age){ return true; }else{ return false; } } }//結(jié)果返回flase
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java的JSON轉(zhuǎn)換庫GSON的基本使用方法示例
GSON是Google制作的一個可以讓Java對象與JSON互相轉(zhuǎn)換的類庫,下面我們就來看一下Java的JSON轉(zhuǎn)換庫GSON的基本使用方法示例:2016-06-06深入理解springboot中配置文件application.properties
本文主要介紹了springboot中配置文件application.properties,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10