1. 程式人生 > >Java的自學之路-構造方法 的作用以及與set方法的區別

Java的自學之路-構造方法 的作用以及與set方法的區別

在java中,我們建立一個類時需要對類中的成員變數進行私有化,private..這樣可以提高程式碼的安全性,那麼在new 一個物件時,我們就不能對類中的成員變數直接賦值,此時可以在類中寫一個 方法,這個方法即set()方法,可以用物件的引用來呼叫set()方法,在set方法裡給成員變數進行賦值,如下程式碼所示:
class Demo_This {
	public static void main(String[] args) {
		System.out.println("Hello World!");
		Person p = new Person();
		p.setName("fengfeilin");
		p.run();
	
	}
}
class Person {
	private String name;
	private int age;
//<span style="color:#ff0000;">建立一個set方法,對private 成員變數賦值</span>
	public void setName(String name){	
		this.name = name;
	}
//<span style="color:#ff0000;">建立get方法,獲取private 成員變數的值</span>
	public String getName(){
		return name;
	}
	public void setAge(int age){
		age = ag;	
	}
	public int getAge(){
		return age;
	}
	public void run (){
		System.out.println(name+"....."+age);
	}


}

而構造方法不用建立 set(),get()方法,直接 在類中構造方法即可.所以構造方法的作用也是對成員變數進行初始化值.構造方法的格式:

a:方法名與類名相同

b:沒有返回值型別,連void都沒有

c:沒有具體的返回值 .可以不寫return語句,或者可以寫return;

如果在一個類中沒有構造方法,系統會預設幫我們寫一個無參的構造方法,裡面的語句是空語句,當我們用建立了有參的構造方法,此時系統是不會幫我們生成一個無參的構造方法,所以我們寫有參的構造方法,必須要把無參的構造方法寫上去.

class Demo_Construct {
	public static void main(String[] args) {
		Person p1 = new Person();
		p1.show();
		System.out.println("......................");

		Person p2 = new Person("馮飛林",23);
		p2.show();	
	}
}
class Person {
	private String name;
	private int age;
//<span style="color:#ff0000;">無參的構造方法</span>
	public Person(){
		System.out.println("這是一個無參的構造方法");
	}
//<span style="color:#ff0000;">有參的構造方法</span>
	public Person(String name,int age){
		this.name = name ;
		this.age = age;
		System.out.println("這是一個有參的構造方法");
	}
	public void show(){
		System.out.println(name+"....."+age);
	}
}
那麼構造方法set(),get()方法的區別呢?

使用構造方法的理由:

1:構造方法注入使用強依賴規定,如果不給足夠的引數,物件則無法建立

2:由於Bean的依賴都通過構造方法設定了,那麼就不用寫更多的set方法,有助於減少程式碼量。

使用set(),get()方法的理由:

1:如果Bean有很多的依賴,那麼構造方法的引數列表會變的很長。

2: 如果一個物件有多種構造方法,構造方法會造成程式碼量增加。

3:如果構造方法中有兩個以上的引數型別相同,那麼將很難確定引數的用途.