Java 封裝的使用詳解
1. 基本介紹
面向?qū)ο缶幊逃腥筇卣鳎悍庋b、繼承和多態(tài)。
2. 封裝介紹
3. 封裝的理解和好處
4. 封裝的實(shí)現(xiàn)步驟 (三步)
5. 快速入門(mén)案例
package com.xdr630.encap; public class Encapsulation01 { public static void main(String[] args) { Person person = new Person(); person.setName("兮動(dòng)人"); person.setAge(1000); person.setSalary(30000); System.out.println(person.info()); System.out.println(person.getSalary()); } } class Person { public String name; //名字公開(kāi) private int age; //age 私有化 private double salary; //.. public String getName() { return name; } public void setName(String name) { //加入對(duì)數(shù)據(jù)的校驗(yàn),相當(dāng)于增加了業(yè)務(wù)邏輯 if(name.length() >= 2 && name.length() <=6 ) { this.name = name; }else { System.out.println("名字的長(zhǎng)度不對(duì),需要(2-6)個(gè)字符,默認(rèn)名字"); this.name = "無(wú)名人"; } } public int getAge() { return age; } public void setAge(int age) { //判斷 if(age >= 1 && age <= 120) {//如果是合理范圍 this.age = age; } else { System.out.println("你設(shè)置年齡不對(duì),需要在 (1-120), 給默認(rèn)年齡18 "); this.age = 18;//給一個(gè)默認(rèn)年齡 } } public double getSalary() { //可以這里增加對(duì)當(dāng)前對(duì)象的權(quán)限判斷 return salary; } public void setSalary(double salary) { this.salary = salary; } //寫(xiě)一個(gè)方法,返回屬性信息 public String info() { return "信息為 name=" + name + " age=" + age + " 薪水=" + salary; } }
6. 將構(gòu)造器和 setXxx 結(jié)合
在使用構(gòu)造方法時(shí),也同樣可以驗(yàn)證,把 set 方法寫(xiě)到構(gòu)造器中,在上面的基礎(chǔ)上增加如下
//如果我們自己使用構(gòu)造器指定屬性 Person person1 = new Person("云兮動(dòng)人", 200, 10000); System.out.println("====兮動(dòng)人的信息===="); System.out.println(person1.info()); //有三個(gè)屬性的構(gòu)造器 public Person(String name, int age, double salary) { /* this.name = name; this.age = age; this.salary = salary;*/ //可以將 set 方法寫(xiě)在構(gòu)造器當(dāng)中,這樣仍然可以驗(yàn)證 setName(name); setAge(age); setSalary(salary); }
7. 練習(xí)
public class Account { //為了封裝,將3個(gè)屬性設(shè)置為private private String name; private double balance; private String pwd; //提供兩個(gè)構(gòu)造器 public Account() { } public Account(String name, double balance, String pwd) { this.setName(name); this.setBalance(balance); this.setPwd(pwd); } public String getName() { return name; } //姓名(長(zhǎng)度為2位3位或4位) public void setName(String name) { if (name.length() >= 2 && name.length() <= 4) { this.name = name; } else { System.out.println("姓名要求(長(zhǎng)度為2位3位或4位),默認(rèn)值 無(wú)名"); this.name = "無(wú)名"; } } public double getBalance() { return balance; } //余額(必須>20) public void setBalance(double balance) { if (balance > 20) { this.balance = balance; } else { System.out.println("余額(必須>20) 默認(rèn)為0"); } } public String getPwd() { return pwd; } //密碼(必須是六位) public void setPwd(String pwd) { if (pwd.length() == 6) { this.pwd = pwd; } else { System.out.println("密碼(必須是六位)默認(rèn)密碼為 000000"); this.pwd = "000000"; } } //顯示賬號(hào)信息 public void showInfo() { //可以增加權(quán)限的校驗(yàn) System.out.println("賬號(hào)信息 name=" + name + " 余額=" + balance + " 密碼" + pwd); // if() { // System.out.println("賬號(hào)信息 name=" + name + " 余額=" + balance + " 密碼"); // }else{ // System.out.println("你無(wú)權(quán)查看..."); // } } }
public class TestAccount { public static void main(String[] args) { //創(chuàng)建Account Account account = new Account(); account.setName("jack"); account.setBalance(60); account.setPwd("123456"); account.showInfo(); } }
到此這篇關(guān)于Java 封裝的使用詳解的文章就介紹到這了,更多相關(guān)Java 封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+mysql+mybatis實(shí)現(xiàn)控制臺(tái)打印sql
在Spring Boot中使用MyBatis與MySQL,并希望在控制臺(tái)打印SQL語(yǔ)句,可以通過(guò)配置MyBatis的日志級(jí)別來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01springboot無(wú)法跳轉(zhuǎn)頁(yè)面的問(wèn)題解決方案
這篇文章主要介紹了springboot無(wú)法跳轉(zhuǎn)頁(yè)面的問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Springboot實(shí)現(xiàn)給前端返回一個(gè)tree結(jié)構(gòu)方法
這篇文章主要介紹了SpringBoot返回給前端一個(gè)tree結(jié)構(gòu)的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07使用Spring Boot搭建Java web項(xiàng)目及開(kāi)發(fā)過(guò)程圖文詳解
這篇文章主要介紹了使用Spring Boot搭建Java web項(xiàng)目及開(kāi)發(fā)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Java?HashMap詳解及實(shí)現(xiàn)原理
Java?HashMap是Java集合框架中最常用的實(shí)現(xiàn)Map接口的數(shù)據(jù)結(jié)構(gòu),它使用哈希表實(shí)現(xiàn),允許null作為鍵和值,可以存儲(chǔ)不同類型的鍵值對(duì),在Java中,HashMap被廣泛應(yīng)用于各種場(chǎng)景,如緩存、數(shù)據(jù)庫(kù)連接池、路由器等,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-05-05MyBatis-Plus如何關(guān)閉SQL日志打印詳解
在使用mybatisplus進(jìn)行開(kāi)發(fā)時(shí),日志是一個(gè)非常有用的工具,它可以幫助我們更好地了解和調(diào)試我們的代碼,這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何關(guān)閉SQL日志打印的相關(guān)資料,需要的朋友可以參考下2024-03-03