JAVA構(gòu)造方法/構(gòu)造器以及this使用方式
構(gòu)造方法/構(gòu)造器
基本語(yǔ)法
·[修飾符]方法名(形參列表){
方法體;
}1.構(gòu)造器的修飾符可以默認(rèn),也可以是public protected private
2.構(gòu)造器沒(méi)有返回值
3.方法名和類名字必須一樣
4.參數(shù)列表和成員方法一樣的規(guī)則
5.構(gòu)造器的調(diào)用系統(tǒng)完成
基本介紹
1.方法名和類名相同
2.沒(méi)有返回值
3.在創(chuàng)建對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造器完成對(duì)象的初始化
4.構(gòu)造器是完成對(duì)象的初始化,并不是創(chuàng)建對(duì)象
5.在創(chuàng)建對(duì)象時(shí),系統(tǒng)自動(dò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è)構(gòu)造器
class Person{
public Person(String pName;int pAge){
name = pName;
Age = pAge;
}
//第二個(gè)構(gòu)造器,只指定姓名,不指定年齡
public Person(String pName){
name = pName;
}
}6.如果沒(méi)有定義構(gòu)造器,系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的無(wú)參構(gòu)造器(也叫默認(rèn)構(gòu)造器)比如Dog(){ },使用javap指令反編譯看看
7.一旦定義了自己的構(gòu)造器,默認(rèn)的構(gòu)造器就覆蓋了,就不能再使用默認(rèn)的無(wú)參構(gòu)造器,除非顯示的定義一下,即:Person(){ }
public class Main{
public static void main(String[] srgs){
Dog d = new Dog();
}
}
class Dog{
/**如果沒(méi)有定義構(gòu)造器,系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的無(wú)參構(gòu)造器(也叫默認(rèn)構(gòu)造器)比如Dog(){ },使用javap指令反編譯看看 // javap Dog.class
默認(rèn)構(gòu)造器
Dog(){
}
*/
//一旦定義了自己的構(gòu)造器,默認(rèn)的構(gòu)造器就覆蓋了,就不能再使用默認(rèn)的無(wú)參構(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");
}
}問(wèn)題:
構(gòu)造方法的輸入?yún)?shù)名不是非常的好,如果能夠?qū)Name改成name就好了,
但是我們會(huì)發(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就是當(dāng)前對(duì)象屬性nmae
this.name = name;
//this.age就是當(dāng)前對(duì)象屬性age
this.age = age;
}
public void info(){//成員方法,輸出屬性+信息
System.out.println(name + "\t" + age + "\t");
}
}this的注意事項(xiàng)和使用細(xì)節(jié)
1.this關(guān)鍵字可以用來(lái)訪問(wèn)本類的屬性、方法、構(gòu)造器
2. this用于區(qū)分當(dāng)前類的屬性和局部變量
3. 訪問(wèn)成員方法的語(yǔ)法:this.方法名(參數(shù)列表);
4. 訪問(wèn)構(gòu)造器語(yǔ)法:this(參數(shù)列表);注意只能在構(gòu)造器中使用
5. this不能在類定義的外部使用,只能在類定義的方法中使用。
public class Main{
public static void main(String[] srgs){
T t = new T();
t.f2();
}
}
class T{
/*
注意:訪問(wèn)構(gòu)造器語(yǔ)法:this(參數(shù)列表);
必須放置第一條語(yǔ)句
*/
public T(){
//這里去訪問(wèn)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比較方法,用于判斷·是否和另一個(gè)人相等,提供測(cè)試類Main用于測(cè)試,名字和年齡完全一樣,就返回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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)國(guó)密通信的流程步驟
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)國(guó)密通信的流程步驟,我們需要完成以下步驟:生成支持國(guó)密的證書,配置兩個(gè) Spring Boot 項(xiàng)目,使用國(guó)密證書實(shí)現(xiàn) HTTPS和驗(yàn)證通信是否成功,通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-11-11
Java的JSON轉(zhuǎn)換庫(kù)GSON的基本使用方法示例
GSON是Google制作的一個(gè)可以讓Java對(duì)象與JSON互相轉(zhuǎn)換的類庫(kù),下面我們就來(lái)看一下Java的JSON轉(zhuǎn)換庫(kù)GSON的基本使用方法示例:2016-06-06
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(58)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-08-08
深入理解springboot中配置文件application.properties
本文主要介紹了springboot中配置文件application.properties,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能詳解
這篇文章主要介紹了Java使用建造者模式實(shí)現(xiàn)辦理手機(jī)套餐功能,較為詳細(xì)的描述了建造者模式的概念、原理并結(jié)合實(shí)例形式分析了Java使用建造者模式實(shí)現(xiàn)的辦理手機(jī)套餐功能具體步驟與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-05-05
Spring框架事務(wù)屬性中事務(wù)隔離級(jí)別與傳播行為全面講解
這篇文章主要介紹了Spring框架聲明式事務(wù)的事務(wù)隔離級(jí)別和事務(wù)傳播行為,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-11-11

