JAVA構造方法/構造器以及this使用方式
構造方法/構造器
基本語法
·[修飾符]方法名(形參列表){
方法體;
}1.構造器的修飾符可以默認,也可以是public protected private
2.構造器沒有返回值
3.方法名和類名字必須一樣
4.參數(shù)列表和成員方法一樣的規(guī)則
5.構造器的調用系統(tǒng)完成
基本介紹
1.方法名和類名相同
2.沒有返回值
3.在創(chuàng)建對象時,系統(tǒng)會自動調用該類的構造器完成對象的初始化
4.構造器是完成對象的初始化,并不是創(chuàng)建對象
5.在創(chuàng)建對象時,系統(tǒng)自動的調用該類的構造方法
public class Main{
public static void main(String[] srgs){
Person p1 = new Person("king",40);
Person p2 = new Person("tom");
}
}
//第一個構造器
class Person{
public Person(String pName;int pAge){
name = pName;
Age = pAge;
}
//第二個構造器,只指定姓名,不指定年齡
public Person(String pName){
name = pName;
}
}6.如果沒有定義構造器,系統(tǒng)會自動生成一個默認的無參構造器(也叫默認構造器)比如Dog(){ },使用javap指令反編譯看看
7.一旦定義了自己的構造器,默認的構造器就覆蓋了,就不能再使用默認的無參構造器,除非顯示的定義一下,即:Person(){ }
public class Main{
public static void main(String[] srgs){
Dog d = new Dog();
}
}
class Dog{
/**如果沒有定義構造器,系統(tǒng)會自動生成一個默認的無參構造器(也叫默認構造器)比如Dog(){ },使用javap指令反編譯看看 // javap Dog.class
默認構造器
Dog(){
}
*/
//一旦定義了自己的構造器,默認的構造器就覆蓋了,就不能再使用默認的無參構造器,除非顯示的定義一下,即: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;
}
//如果我們的構造器的形參,能夠直接寫成屬性名,就更好
public void info(){//成員方法,輸出屬性+信息
System.out.println(name + "\t" + age + "\t");
}
}問題:
構造方法的輸入?yún)?shù)名不是非常的好,如果能夠將dName改成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;
//構造器的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關鍵字可以用來訪問本類的屬性、方法、構造器
2. this用于區(qū)分當前類的屬性和局部變量
3. 訪問成員方法的語法:this.方法名(參數(shù)列表);
4. 訪問構造器語法:this(參數(shù)列表);注意只能在構造器中使用
5. this不能在類定義的外部使用,只能在類定義的方法中使用。
public class Main{
public static void main(String[] srgs){
T t = new T();
t.f2();
}
}
class T{
/*
注意:訪問構造器語法:this(參數(shù)列表);
必須放置第一條語句
*/
public T(){
//這里去訪問T(String name,int age)構造器
this("jack",1000);
System.out.println("T()構造器");
}
public T(String name,int age){
System.out.println("T(String name,int age)構造器");
}
public void f1(){
System.out.println("f1()方法..");
}
public void f2(){
System.out.println("f2()方法..");
//調用本類的 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;
//構造器
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;
}
}
}//結果返回flase
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringCloudConfig之client端報錯Could?not?resolve?placeholder問
這篇文章主要介紹了SpringCloudConfig之client端報錯Could?not?resolve?placeholder?‘from‘?in?value?“${from}“問題及解決方案,具有很好的參考價值,希望對大家有所幫助2022-12-12
SpringCloud使用Nacos保存和讀取變量的配置方法
在使用SpringCloud開發(fā)微服務時,經(jīng)常會遇到一些比較小的后臺參數(shù)配置,這些配置不足以單獨開一張表去存儲,而且其他服務會讀取該參數(shù),這篇文章主要介紹了SpringCloud使用Nacos保存和讀取變量,需要的朋友可以參考下2022-07-07
深入解析Java中的InterruptedException從異常處理到最佳實踐方案
在Java多線程編程中,InterruptedException 是一個常見但又容易被忽視的異常,本文將通過一個實際的日志案例,分析 InterruptedException 的產(chǎn)生原因、影響,并提供合理的解決方案和最佳實踐,感興趣的朋友一起看看吧2025-06-06
SpringBoot整合MP通過Redis實現(xiàn)二級緩存方式
這篇文章主要介紹了SpringBoot整合MP通過Redis實現(xiàn)二級緩存方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

