標籤:匿名對象、private、this、static
匿名對象
* 節省代碼,並且很多情況下是針對某個方法只需要調用一次的情況下。
* 匿名對象可以調用方法,也可以給成員變數賦值。 同時也可以作為方法的參數進行傳遞。
public class AnonDemo{ public static void main(String[] args){ System.out.println(new Student().name); System.out.println(new Student().sex); System.out.println(new Student().age);}}class Student{ String name="poppy"; String sex="女"; int age=20;}
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/08/9A/wKiom1nkj-Sw1z2sAAAVY3gdoow908.png-wh_500x0-wm_3-wmp_4-s_2269510850.png" title="8Z$9Z13E}THTFRYJMU4TY88.png" alt="wKiom1nkj-Sw1z2sAAAVY3gdoow908.png-wh_50" />
封裝
* 概念: 隱藏對象的屬性和細節,僅對外提供公用的方法進行訪問。
* private
* 當類的成員變數使用private 修飾符修飾,那麼就不可以直接存取到該成員變數.
* 當使用private 修飾的成員變數或者成員方法,僅能在本類中使用
* private 對於main 方法的修飾,也是可以產生作用的.
public class PrivateDemo{ public static void main(String[] args){ Student student=new Student(); //student.name="弋痕夕";//如果在外部存取private則會出現name可以在Student中訪問private student.subject();}}class Student{ private String name; private String sex; private int age; void subject(){ name="山鬼謠";//private在本類中沒有限制 System.out.println(name+"選擇的課是java"); }}
student.name(錯誤)
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/08/BC/wKiom1nmmhCxOQncAAAZMBzo6f8347.png-wh_500x0-wm_3-wmp_4-s_1636494779.png" title="}OZH0]}JFW7GW%R{Y9@6K]B.png" alt="wKiom1nmmhCxOQncAAAZMBzo6f8347.png-wh_50" />
name="山鬼謠";
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A7/6B/wKioL1nmmNWzIZ3hAAATl282WgQ529.png-wh_500x0-wm_3-wmp_4-s_2335955100.png" title="LGGCUC5VRD(BHS36N~VFMQH.png" alt="wKioL1nmmNWzIZ3hAAATl282WgQ529.png-wh_50" />
* javaBean:
它的所有成員變數都使用private 進行修飾,並且對外提供可訪問的設定值和擷取值的set,get 方法。不同的應用情境,可能命名不同,資料庫的應用中稱為POJO類.
public class JavaBeanDemo{ public static void main(String[] args){ Student student=new Student(); student.setName("山鬼謠"); student.setSex("男"); student.setAge(24); student.subject(); }}class Student{ private String name; private String sex; private int age; void setName(String nameParm){ name=nameParm; } //JavaBean類 String getName(){ return name; } void setSex(String sexParm){ sex=sexParm; } String getSex(){ return sex; } void setAge(int ageParm){ age=ageParm; } int getAge(){ return age; } void subject(){ System.out.println(name+":"+sex+","+age+"歲"); System.out.println("選擇的課是java"); }}
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/A7/6C/wKioL1nmnwXQRDS_AAAXXwTg2Bk619.png-wh_500x0-wm_3-wmp_4-s_2300127171.png" title="EG_J~%V~SLV[$21(HR67Y}F.png" alt="wKioL1nmnwXQRDS_AAAXXwTg2Bk619.png-wh_50" />
優先原則: 對於一個類的成員方法來說,如果傳遞的形參的變數名稱和類的成員變數名稱相同,jvm在處 理的時候優先當做方法的形參來處理。
this 關鍵字
代表了當前對象的引用(可以理解為,當前誰來調用,那麼方法中的this 就代表誰)。
對於成員變數可以區分出來的情境,this 可加也可以不加,實際效果相同。但是對於實現 javaBean/POJO 來說,我們建議都加上在setXXX,getXXX方法中.
例:
void setName(String name){
this.name=name;
}
String getName(){
return this.name;
}
* 初始化類成員變數的方式
* 在定義成員變數的同時進行賦值.
* 提供外界可訪問到的方法,在方法中進行賦值.
* 通過構造方法進行賦值.
public class VariableDemo{ public static void main(String[] args){ Student student=new Student(); student.write(); Student student1=new Student("山鬼謠");//構造方法賦值 student1.write(); Student student2=new Student(); student2.setName("天淨沙");//在方法中進行賦值 student2.write();}}class Student{ String name="弋痕夕";//定義成員變數時同時賦值 Student(){ } Student(String name){ this.name=name; } void setName(String name){ this.name=name; } String getName(){ return this.name; } void write(){ System.out.println("姓名:"+name); } }
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/A7/7A/wKioL1nnHYrALMexAAAYmr0Lptk218.png-wh_500x0-wm_3-wmp_4-s_610180405.png" title="俠嵐1.png" alt="wKioL1nnHYrALMexAAAYmr0Lptk218.png-wh_50" />
static
* 隨著類載入而載入(靜態方法區中來儲存靜態成員變數)
* 優先於對象建立
* 被類的所有對象共用(靜態成員變數會儲存在該class的靜態方法區中,所以每個對象看到的 都是同一份.)
* 可以通過類名來訪問也可以通過對象名來訪問(一般通過類名來訪問)。
* 靜態成員,一般稱為類相關的成員。
* static 修飾符既可以修飾成員變數,也可以修飾成員方法。 且修飾之後,就可以通過類名來直 接訪問到。
* this變數在靜態方法中不可以使用
* 靜態方法中只能訪問靜態成員變數和靜態方法;非靜態方法既可以訪問靜態成員和方法也可以訪 問非靜態成員和方法。
public class StaticDemo{ public static void main(String[] args){ Person person=new Person(); person.setName("山鬼謠"); Person.skill();//通過類名來訪問 }}class Person{ static String name; static String sex; void setName(String nameParm){ name=nameParm; } String getName(){ return name; } static void skill(){ System.out.println(name+"的技能是:“絕氣逆空”");}}
非靜態雖然可以訪問靜態方法,但是不建議這樣做。
* main方法.
修飾符 傳回型別 方法名 (參數列表){
}
public static void main(String[] args){
}
* public: 最大的一個存取權限,使得jvm能夠成功調用
* static: 類相關的,與對象無關. A.main([]);
public class A{
main(){
System.("");
}
}
Java學習lesson 06