1. 程式人生 > >Java:構造一個Person類,運用方法過載

Java:構造一個Person類,運用方法過載

public class Person{
	String name;        //字串 名字
	int age;           //int 年齡
	private String secret="...";    //字串 祕密
	int height;     //  int 體重
	
	//構造方法1
	public Person(){} //可以建立一個空的物件,不提供引數
	public Person(String name,int age, String secret){
		this.name=name;   //現在的=你賦值的
		this.age=age;
		this.secret=secret;
	}
	
	//構造方法1的過載 ,為了創建出不同屬性資訊的物件
	public Person(String name,int age,int height){
		this.name=name;   
		this.age=age;
		this.height=height;
	}
	
	//構造方法1的過載  四個屬性,有三個屬性之前已經構造了
	public Person(String name,int age, String secret,int height){
		this(name,age,height);    //在上面已經建立過可以寫為this()
		this.secret=secret;	
	}
	
	
	
	//構造方達2
	//可以外部訪問的屬性:get+屬性名稱
	String getSecret(){
		return secret;
	}
	String getName(){
		return name;
	}
	int getAge(){
		return age;
	}
	//可以外部修改定義的屬性     set+屬性名稱
	void setName(String name){
		this.name=name;
	}
	void setAge(int age){
		this.age=age;
	}
	void setSecret(String secret){
		this.secret=secret;
	}
	
	
String personInFo(){
		return "這個人是"+name+",年齡是"+age+"歲,她的祕密是:"+secret;
	}		
	

	//建立一個具體物件
	public static void main(String[] args){
		Person person1=new Person();
		person1.name="張三";
		person1.age=20;
		person1.secret="沒有祕密";
		
		Person person2=new Person("李四",19,"也沒有祕密");
		
		Person person3=new Person("王五",18,"同樣沒有祕密");
		
		//person4的值由person3的地址對應的內容給定,修改person4,相當於修改了person3的內容
		//引用傳遞,在同一塊地址
		Person person4=person3; 
		person4.name="冪";
		
		Person person5=new Person("迪麗",18,50);
		
		//person變數引用指向空
		//堆上的person3物件已經沒有變數使用它
		//但是person3依舊存在,還是佔用空間,不做記憶體回收,由虛擬機器自動回收。
		//person3=null;
		//person4=null;

		System.out.println(person1.personInFo());
		System.out.println(person2.personInFo());
		System.out.println("我的名字是:"+person3.name+",曾經我只有"+person3.age+"歲。");
		System.out.println(person4.personInFo());
		System.out.println(person5.personInFo());
		
		//建立一個匿名物件
		new Person("匿名物件",18,"使用一次就丟棄");
		System.out.println(new Person("匿名物件",18,"使用一次就丟棄").personInFo());
		
	}	
}