JAVA筆記之private、構造函數、this

* private:私有,權限修飾符;用於修飾類中的成員(成員變量,成員函數)。
 *將age私有化以後,類以外不能直接訪問
 *所以得在類中提供訪問age的方式
 *注意:私有僅僅是封裝的一種表現形式
 *之所以對外提供訪問方式,就因爲可以在訪問方式中加入邏輯判斷等語句。
 *對訪問的數據進行操作,提高代碼的健壯性。
 */
package PersonDemo;
class Person
{
	private int age;
	//權限     返回值    函數名(){} 
	public void setAge(int a){
		if(a>0 && a<130)
		{
			age=a;	
			speak();
		}
		else
		{
			System.out.println("Error Data");
		}
	}
	
	public int getAge() {
		return age;
	}
	
	void speak(){
		System.out.println("age" + age);
	}
}

public class MyDemo {
	public static void main(String[] args)
	{
			Person p = new Person();
		
			p.setAge(-20);
			//p.speak(); 
	}
}
/*
 * 構造函數對象一建立就會調用與之對應的構造函數
 * 作用:可以給對象進行初始化
 * 
 *小細節:
 *當一個類中沒有定義構造函數時,那麼系統就會默認給該類加入一個空參數的構造函數。
 *當在類中自定義了構造函數,系統將不再構造。
 *
 *構造函數和一般函數在寫法上不同。
 *在運行上也有不同
 *構造函數實在對象一建立就運行,給對象初始化。
 *而一般方法是對象調用才執行,給是對象添加對象具備的功能
 *
 *一般對象建立,構造函數只運行一次。
 *而一般方法可以杯該對象調用多次
 *
 *什麼時候定義構造函數?
 *當分析事物是,該事務存在具備一些特性或者行爲,那麼將這些定義內容定義在構造函數
 */
package PersonDemo2;
class Person{
	private String name;
	private int age;
	/*
	 * 構造代碼塊
	 * 作用:給對象進行初始化
	 * 對象一建立就運行,而且優先於構造函數運行
	 * 和構造函數的區別:
	 * 是給所有對象進行統一初始化
	 * 構造函數是給對應的對象初始化
	 * 
	 */
	{
		//System.out.println("Person code run");
		cry();
	}
	
	Person()
	{
		System.out.println("A:name=" + name + ",age=" + age);
		//cry();
	}
	Person(String n)
	{
		name =n;
		System.out.println("B:name=" + name + ",age=" + age);
		//cry();
		
	}
	Person(String n, int a)
	{
		name = n;
		age = a;
		System.out.println("C:name=" + name + ",age=" + age);
		//cry();
	}
	
	public void setName(String n)
	{
		name = n;
	}
	public String getName()
	{
		return name;
	}
	public void cry(){
		System.out.println("Cry");
	}
}

public class PersonDemo2 {
	public static void main(String[] args)
	{
		Person p1 = new Person();
		
		Person p2 = new Person("lisi");
		p2.setName("libusi");
		System.out.println(p2.getName());
		
		//Person p2 = new Person("lisi");
		//Person p3 = new Person("wangwu", 10);
	}
}

/*
 * this:用於區分局部變量和成員變量同名的情況
 * 
 * this:代表哪一個?
 * 		this代表他所在函數所屬對象的引用。
 * 哪個對象在調用,this就代表哪個。
 * 
 * this應用:當定義類中功能是,該函數內部需要調用該函數的對象是,這是用this來表示這個對象
 */

package PersonDemo3;

class Person{
	private String name;
	private int age;
	Person(int age)
	{
		this.age = age;
	}
	
	Person(String name)
	{
		this.name = name;
	}
	Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public void speak()
	{
		System.out.println("name=" + this.name + ",age=" + this.age);
		this.show();
	}
	public void show()
	{
		System.out.println(this.name);
	}
	/*
	 * 需求:給人定義一個年齡是否相同的功能
	 */
	public boolean compareAge(Person p)
	{
		return this.age==p.age;
		/*if(this.age = p.age)
		{
			return true;
		}	
		else
		{
			return false;
		}*/
	}

}

public class PersonDemo3 {
	
	public static void main(String[] args)
	{
		Person p1 = new Person(30);
		Person p2 = new Person(25);
		boolean b = p1.compareAge(p2);
		System.out.println(b);
		//Person p = new Person("lisi");
		//Person p1 = new Person("zhangsan");
		//p1.speak();
	}

}
package PersonDemo;
/*
 * this語句:用於構造函數直接互相調用
 * 
 * 構造函數間調用要用this
 * 
 * this語句只能定義在函數的 第一行
 */
class Person
{
	private String name;
	private int age;
	
	Person(String name)
	{
		this.name = name;
	}
	
	Person(String name, int age)
	{
		//this();
		this(name); //this.name =name;  p(name);
		this.age = age;
	}
}

public class PersonDemo {

	public static void main(String[] args)
	{
		Person p =new Person("lisi", 30);
		Person p1 =new Person("lisi2", 36);
	}
}



發佈了46 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章