為什麼要用set,get方法封裝欄位
- 一個屬性如果設定public是很危險的,如將人的身高屬性設為-1,大家都知道人的身高不能使負值,但對於一個public的屬性來說,你無法阻止其他類的胡作非為。
- 下面來舉個小例子
先來說一個段public的程式碼
public class Person{
public int height;
}
-----------------------------------------------
public class Main{
public static void main(String[] args) {
Person p = new Person();
p.height=-1 ;
}
}
再看一下用set,get方法的好處
public class Person{
private int height;
public void setHeight(int height){
public int getHeight() {
return height;
}
public void setHeight(int height) {
if(height<=0){
System.err.println("s身高不能是負值" +height);
return;
}
this.height = height;
}
}
--------------------------------------------------------
public class Main{
public static void main(String[] args) {
Person p = new Person();
//p.height=-1;因為屬性設定成private,所以p.height=-1;
p.setHeight(-1);
}
}
現在輸出的結果是(大家應該都明白的):
相關推薦
為什麼要用set,get方法封裝欄位
一個屬性如果設定public是很危險的,如將人的身高屬性設為-1,大家都知道人的身高不能使負值,但對於一個public的屬性來說,你無法阻止其他類的胡作非為。 下面來舉個小例子 先來說一個段public的程式碼 public class Person
java封裝中的private關鍵字和set,get方法
封裝: 隱藏物件的屬性值和實現的方式,對外只提供訪問的公共方式。 好處: 提供啊程式碼的複用性 隱藏物件的屬性值和實現的方式 提高安全性 封裝的原則性: 把不需要
建立圓形類,其中包括set,get方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 圓{ class circle { int center_x; in
通過PropertyDescriptor反映射調用set和get方法
getc UNC extends pen except extend port rac bject package com.zhoushun; import java.lang.reflect.Method; import java.lang.reflect.Field;
你現在還在手動生成set,get方法嗎?使用lombok
JAVA面向物件程式設計中的封閉性和安全性。封閉性即對類中的域變數進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變數訪問。這樣我們就將這些變數封閉在了類內部,這樣就提高了資料的安全性,當我們想要操作這些域變數怎麼辦呢? 我們可以通過兩種方
【封裝】java中為什麼要將屬性進行私有化,又使用set和get方法來設定和獲取屬性呢?
其實這裡體現的就是封裝的思想: 將資料與行為進行分離。 試想, 如果外面的程式可以隨意修改一個類的成員變數,會造成不可預料的程式錯誤, 就象一個人的名字, 不能被外部隨意修改,只能通過各種給定的方法去
重寫set和get方法後,為什麼使用時會發生無效?解析命名規範
今天博主偶然遇到如題的問題,方法寫的沒錯,都是一一對應的,但就是不呼叫set方法,百度了很多,有人說要強制寫@synthesize,還有的說@property有沒有寫,之類的,既然重寫了get,set方法,@property肯定是不會缺失的,都是一些不疼不癢的回
access Vba中,對日期時間欄位賦空值時,要用Null ,而不是""。
最近一片白雲對“鶴慶縣人事工資變動調資與工資管理系統”增加了一些功能,其中就是能將Access資料表“職工檔案”中的“薪級變動時間”欄位、“崗位變動時間”欄位的日期用程式自動更新為空,在用SQL語句中遇到一點點小問題,經過在網上查詢,問題總算解決了,怪自己學藝不夠紮實。現將SQL語句提供給正在尋找答案的
hibernate中懶加載急加載的區別,get方法和load方的區別法
() session 執行 語句 style 開啟 異常 方式 速度 懶加載是hibernate中的關聯關系對象的默認方式,懶加載也會先去查詢對象然後獲取對象的id, 當正真要對數據進行使用時才會正真寫sql語句。 懶加載的有效加載期是在session打開的時候,所以在我們
【Android Studio安裝部署系列】二十二、Android studio自動生成set、get方法
setter 自動生成 全選 style 原創文章 back .com 安裝部署 dash 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 操作步驟 將光標放置我們所要生成get,set方法的實體類空白處——然後右鍵—&mdas
JAVA中關於set()和get()方法的理解及使用
當我 一般來說 怎麽 而是 知識 了解 構造 set 今後 https://www.cnblogs.com/fly-sky-han/p/6564439.html 我們先來看看set和get這兩個詞的表面意思,set是設置的意思,而get是獲取的意思,顧名思義,這兩個方法是對
寫代碼要用 Vim,因為越難入門的工具回報越大
windows 發的 自帶 錯誤 improve 做的 重寫 36kr 用戶真正的需求 編者按:現在的技術界有一種傾向,將軟件/應用操作簡單化,用戶能輕松上手。但是工具是否強大,取決於它能否靈活地滿足使用者的各種需要。有些工具雖然很難入門,學會了便能對自己的操作有更深的層次
Vue中computed的set和get方法
拆分 ack data his col ted this mpat idt 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"&g
c++連結SQL server ,用SQL語句打印表中的記錄,增加表中的記錄,刪除表的欄位
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF") // 唯一的應用程式物件 CWinApp
Eclipse快速生成set和get方法
首先建立好該類的field; 然後選中需要生成的變數,然後shift+alt+s,選擇generate getters and getters, 上面可以再一次選擇需要生成的變數,底下可以選擇生成的程式碼插入的地方,first number ,lastnumber或某個定
java中set()和get()方法的理解
1.名詞理解 從名字看set是設定的意思而get是獲取的意思,所以顧名思義這兩個方法是對資料進行設定和獲取操作的,我們往往不會單獨的使用它們而是用一些修飾詞配合使用,比如setname(), getname() ,setage(), getage(),等等 2.使用場景 JAVA
呼叫private(有set和get方法)私有化修飾的變數
我們先來看看set和get這兩個詞的表面意思,set是設定的意思,而get是獲取的意思,顧名思義,這兩個方法是對資料進行設定和獲取用的。而且,在類中使用set和get方法時,都是在set和get後面跟上一些特定的詞來形成特定意思的方法名,比如setage()和getage(),表示設定年齡和獲取年齡
為什麼要用dubbo,dubbo和zookeeper關係
為什麼要用dubbo? 當網站規模達到了一定的量級的時候,普通的MVC框架已經不能滿足我們的需求,於是分散式的服務框架和流動式的架構就凸顯出來了。
為什麼要用spring,springMVC?
今天被公司派到別的公司談專案,剛去就先被面試了一波(原來是把我外包到別的公司做專案了 -。-),面試時候問了我一個問題,很簡單,就是問我java開發web專案為什麼要用spring,springmvc? 好吧,當時我人直接懵逼了,什麼鬼問我這個!!不就是可以
用generator 根據oracle表生成java程式碼,資料庫與程式碼欄位不一致
前兩天用generator生成java程式碼時發現,生成的javabean和資料庫裡的欄位對應不上,不是少幾個就是有幾個欄位不一樣,感覺很怪異,後來發現日誌裡邊這個錶轉換成bean是日誌列印了好幾遍,所有怪事都是有原因的,我開始研究generator原始碼。 用IDEA跟蹤