1. 程式人生 > >為什麼要用set,get方法封裝欄位

為什麼要用set,get方法封裝欄位

  1. 一個屬性如果設定public是很危險的,如將人的身高屬性設為-1,大家都知道人的身高不能使負值,但對於一個public的屬性來說,你無法阻止其他類的胡作非為。
  2. 下面來舉個小例子

先來說一個段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); } }

現在輸出的結果是(大家應該都明白的):
這裡寫圖片描述

相關推薦

為什麼setget方法封裝

一個屬性如果設定public是很危險的,如將人的身高屬性設為-1,大家都知道人的身高不能使負值,但對於一個public的屬性來說,你無法阻止其他類的胡作非為。 下面來舉個小例子 先來說一個段public的程式碼 public class Person

java封裝中的private關鍵字和setget方法

封裝:     隱藏物件的屬性值和實現的方式,對外只提供訪問的公共方式。 好處:     提供啊程式碼的複用性     隱藏物件的屬性值和實現的方式     提高安全性 封裝的原則性:     把不需要

建立圓形類其中包括setget方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 圓{ class circle { int center_x; in

通過PropertyDescriptor反映射調setget方法

getc UNC extends pen except extend port rac bject package com.zhoushun; import java.lang.reflect.Method; import java.lang.reflect.Field;

你現在還在手動生成setget方法嗎?使用lombok

JAVA面向物件程式設計中的封閉性和安全性。封閉性即對類中的域變數進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變數訪問。這樣我們就將這些變數封閉在了類內部,這樣就提高了資料的安全性,當我們想要操作這些域變數怎麼辦呢?     我們可以通過兩種方

封裝】java中為什麼將屬性進行私有化又使用setget方法來設定和獲取屬性呢?

其實這裡體現的就是封裝的思想: 將資料與行為進行分離。 試想, 如果外面的程式可以隨意修改一個類的成員變數,會造成不可預料的程式錯誤, 就象一個人的名字, 不能被外部隨意修改,只能通過各種給定的方法去

重寫setget方法為什麼使用時會發生無效?解析命名規範

今天博主偶然遇到如題的問題,方法寫的沒錯,都是一一對應的,但就是不呼叫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自動生成setget方法

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的setget方法

拆分 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快速生成setget方法

首先建立好該類的field; 然後選中需要生成的變數,然後shift+alt+s,選擇generate getters and getters, 上面可以再一次選擇需要生成的變數,底下可以選擇生成的程式碼插入的地方,first number ,lastnumber或某個定

java中set()和get()方法的理解

1.名詞理解 從名字看set是設定的意思而get是獲取的意思,所以顧名思義這兩個方法是對資料進行設定和獲取操作的,我們往往不會單獨的使用它們而是用一些修飾詞配合使用,比如setname(), getname() ,setage(), getage(),等等 2.使用場景 JAVA

呼叫private(有setget方法)私有化修飾的變數

我們先來看看set和get這兩個詞的表面意思,set是設定的意思,而get是獲取的意思,顧名思義,這兩個方法是對資料進行設定和獲取用的。而且,在類中使用set和get方法時,都是在set和get後面跟上一些特定的詞來形成特定意思的方法名,比如setage()和getage(),表示設定年齡和獲取年齡

為什麼dubbodubbo和zookeeper關係

為什麼要用dubbo? 當網站規模達到了一定的量級的時候,普通的MVC框架已經不能滿足我們的需求,於是分散式的服務框架和流動式的架構就凸顯出來了。    

為什麼springspringMVC?

今天被公司派到別的公司談專案,剛去就先被面試了一波(原來是把我外包到別的公司做專案了 -。-),面試時候問了我一個問題,很簡單,就是問我java開發web專案為什麼要用spring,springmvc?   好吧,當時我人直接懵逼了,什麼鬼問我這個!!不就是可以

generator 根據oracle表生成java程式碼資料庫與程式碼不一致

前兩天用generator生成java程式碼時發現,生成的javabean和資料庫裡的欄位對應不上,不是少幾個就是有幾個欄位不一樣,感覺很怪異,後來發現日誌裡邊這個錶轉換成bean是日誌列印了好幾遍,所有怪事都是有原因的,我開始研究generator原始碼。 用IDEA跟蹤