Java中get()和set()作用


一、前言

在程序的設計中,我們普遍的定義一個private變量,然后為這個變量加上get() 、set()方法,那為何不直接定義一個public變量呢?

很多人是這樣回答的:

1、關系到安全性的問題,貌似具有說服力,使用pubilc變量有何不安全呢?使用get()和set()安全在哪里呢?(假如你開發一個類給別人用,人家只要輸入.get就能知道所有的屬性。)

2、有些人說封裝性,但是變量本身就是封裝在類里面的呀!

其實大部分人都是人雲亦雲,說什么安全性和封裝性,只要學java的人都知道這些名詞。

我的理解它的更多的作用是數據輸入輸出的控制。

二、get()和set()作用

(1)、安全性

程者可以選擇只讀或者只寫 或者讀寫都行。

public class Circle { private double radius; private double pai = 3.14; public double getPai() { return pai; } public void setRadius(double radius) { this.radius = radius; } /**  * 計算周長  */ public double getC() { return 2*pai*radius; } } 

定義了一個圓類,定義了屬性半徑和pai,半徑只提供寫的方法,但不提供讀,而pai只提供讀,但不能寫,並提供了一個計算周長的方法getC。在實際項目中,對一些類的設計時,嚴謹的設計是要考慮哪些類是只讀或是只寫的。

(2)、靈活性

如在定義一個Person類時,設置一個屬性name,當取名字的時候,不只是顯示名字,代碼如下:

public class Person { private String name; public String getName() { return "我的名字叫" + name; } public void setName(String name) { this.name = name; } } 

(3)、封裝性

(4)、健壯性

其實java中對外提供訪問方式,就是因為可以在訪問方式中加入邏輯判斷等語句,對訪問的數據進行操作。提高代碼的健壯性。

簡單小栗子:

class Person
{
	private int age;
	public void setAge(int a)
	{
		if(a>0 && a<130)
		{
			age = a;
			speak();
		}
		else
			System.out.println("feifa age");
	}

	public int getAge()
	{
		return age;
	}
	private void speak()
	{
		System.out.println("age="+age);
	}
}

class PersonDemo
{
	public static void  main(String[] args)
	{
		Person p = new Person();

		//p.age = -20;
		p.setAge(-40);
		//p.speak();
	}
}

總結

更多的用法只能在使用中多體會了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM