1. 程式人生 > >java簡單類+this關鍵字用法

java簡單類+this關鍵字用法


今天開始學習java,第一次自學其他語言,真是有些小興奮呢,這些與C++不同的特性或是不熟悉的特性都希望能將其記錄下來,日後便於查閱複習,順便見證下自己的成長軌跡,嘿嘿嘿。。。


今日問題

搞定

  • java簡單類是啥,咋用
  • this關鍵字三類用法

半懂

  • this在過載的構造方法中呼叫其它構造方法為啥要置頂??

懵逼

  • String類兩種構造方法的區別,字串構造,普通類構造??
  • 字串內容一旦聲明後不可改??

java簡單類 is what??

java簡單類是一種重要的開發模型,也可以稱為一種編寫規範,有四條原則

須遵守

  • 1,類中所有屬性必須用private修飾(封裝體現)
  • 2,類中所有屬性必須有setter,getter方法(進一步支援封裝)
  • 3,類中若有過載構造方法,需按照引數有序排列(升/降)(好看);一定要包括一個無參構造方法(避免後續出錯)
  • 4,不允許在類的方法中使用列印語句(System.out.println),若想列印,必須將結果返回呼叫處

this關鍵字 is what???

this關鍵字可將其看成一個物件,所以物件能幹的事它基本都能幹,不過他是特指本類,他有三種用法

  • 1,表示本類屬性:this.屬性
  • 2,表示本類方法,方法分為普通方法:this.方法名()
    ,構造方法:this()
  • 3,表示當前物件

tips表示本類屬性、方法或物件可在類中任意位置使用,但是表示構造方法則有限制

  • 1,僅在構造方法中呼叫
  • 2,必須置於第一句(例項化物件呼叫優先順序:構造方法>普通方法>其他語句)
  • 3,this可用來提高複用性

一個員工例子說明java簡單類原則,this關鍵字使用屬性及方法

public class Employee {
	//原則1:所以屬性加上private
	private String id;
	private String name;
	private String salary;
private String department; //原則2:若有多個過載建構函式,按照引數個數升序或降序排放; // 必須要有無參建構函式 public Employee() {} public Employee(String id) { this.id = id;//this使用屬性 } public Employee(String id,String name) { this(id);//this呼叫構造方法,必須置於第一行 this.name = name;//this使用屬性 } public Employee(String id,String name,String salary,String department) { this(id,name);//this呼叫構造方法,必須置於第一行 this.setSalary(salary);//this呼叫普通方法,等價於this.salary = salary; this.department = department;//this使用屬性 } //原則3:每個屬性均有setter,getter方法 public void setId(String id) { this.id = id; } public String getId() { return this.id; } public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setSalary(String salary) { this.salary = salary; } public String getSalary() { return this.salary; } public void setDepartment(String department) { this.department= department; } public String getDepartment() { // System.out.println("不可以直接在方法中輸出,必須將值返回給呼叫處");原則四 return this.department; } public static void main(String[] args) { Employee e = new Employee("100","阿俊","10000","技術部"); System.out.println(e.getId()); System.out.println(e.getName()); System.out.println(e.getSalary()); System.out.println(e.getDepartment());//呼叫處輸出 e.setId("666"); System.out.println(e.getId()); } }

輸出結果

1
2
3
100
阿俊
10000
技術部
666

一個簡單例子演示this關鍵字表示物件

class DemoA{
	public void print() {
		System.out.println("當前物件:"+this);
	}
}
public class Demo_this {
	public static void main(String[] args) {
		DemoA d1 = new DemoA();//宣告並例項化物件
		DemoA d2 = new DemoA();
		System.out.println(d1);//輸出物件
		d1.print();//呼叫函式測試輸出(違背了java類原則4,不過這裡是為了演示效果)
		System.out.println("==============");
		System.out.println(d2);
		d2.print();
	}
}

結果

[email protected]
當前物件:[email protected]
==============
[email protected]
當前物件:[email protected]