Java 封裝的使用詳解
更新時間:2021年11月05日 10:19:45 作者:兮動人
在面向對象程式設計方法中,封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節(jié)部分包裝、隱藏起來的方法。封裝可以被認為是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問。要訪問該類的代碼和數據,必須通過嚴格的接口控制
1. 基本介紹
面向對象編程有三大特征:封裝、繼承和多態(tài)。
2. 封裝介紹
3. 封裝的理解和好處
4. 封裝的實現步驟 (三步)
5. 快速入門案例
package com.xdr630.encap; public class Encapsulation01 { public static void main(String[] args) { Person person = new Person(); person.setName("兮動人"); person.setAge(1000); person.setSalary(30000); System.out.println(person.info()); System.out.println(person.getSalary()); } } class Person { public String name; //名字公開 private int age; //age 私有化 private double salary; //.. public String getName() { return name; } public void setName(String name) { //加入對數據的校驗,相當于增加了業(yè)務邏輯 if(name.length() >= 2 && name.length() <=6 ) { this.name = name; }else { System.out.println("名字的長度不對,需要(2-6)個字符,默認名字"); this.name = "無名人"; } } public int getAge() { return age; } public void setAge(int age) { //判斷 if(age >= 1 && age <= 120) {//如果是合理范圍 this.age = age; } else { System.out.println("你設置年齡不對,需要在 (1-120), 給默認年齡18 "); this.age = 18;//給一個默認年齡 } } public double getSalary() { //可以這里增加對當前對象的權限判斷 return salary; } public void setSalary(double salary) { this.salary = salary; } //寫一個方法,返回屬性信息 public String info() { return "信息為 name=" + name + " age=" + age + " 薪水=" + salary; } }
6. 將構造器和 setXxx 結合
在使用構造方法時,也同樣可以驗證,把 set 方法寫到構造器中,在上面的基礎上增加如下
//如果我們自己使用構造器指定屬性 Person person1 = new Person("云兮動人", 200, 10000); System.out.println("====兮動人的信息===="); System.out.println(person1.info()); //有三個屬性的構造器 public Person(String name, int age, double salary) { /* this.name = name; this.age = age; this.salary = salary;*/ //可以將 set 方法寫在構造器當中,這樣仍然可以驗證 setName(name); setAge(age); setSalary(salary); }
7. 練習
public class Account { //為了封裝,將3個屬性設置為private private String name; private double balance; private String pwd; //提供兩個構造器 public Account() { } public Account(String name, double balance, String pwd) { this.setName(name); this.setBalance(balance); this.setPwd(pwd); } public String getName() { return name; } //姓名(長度為2位3位或4位) public void setName(String name) { if (name.length() >= 2 && name.length() <= 4) { this.name = name; } else { System.out.println("姓名要求(長度為2位3位或4位),默認值 無名"); this.name = "無名"; } } public double getBalance() { return balance; } //余額(必須>20) public void setBalance(double balance) { if (balance > 20) { this.balance = balance; } else { System.out.println("余額(必須>20) 默認為0"); } } public String getPwd() { return pwd; } //密碼(必須是六位) public void setPwd(String pwd) { if (pwd.length() == 6) { this.pwd = pwd; } else { System.out.println("密碼(必須是六位)默認密碼為 000000"); this.pwd = "000000"; } } //顯示賬號信息 public void showInfo() { //可以增加權限的校驗 System.out.println("賬號信息 name=" + name + " 余額=" + balance + " 密碼" + pwd); // if() { // System.out.println("賬號信息 name=" + name + " 余額=" + balance + " 密碼"); // }else{ // System.out.println("你無權查看..."); // } } }
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(); } }
到此這篇關于Java 封裝的使用詳解的文章就介紹到這了,更多相關Java 封裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot+mysql+mybatis實現控制臺打印sql
在Spring Boot中使用MyBatis與MySQL,并希望在控制臺打印SQL語句,可以通過配置MyBatis的日志級別來實現,具有一定的參考價值,感興趣的可以了解一下2024-01-01使用Spring Boot搭建Java web項目及開發(fā)過程圖文詳解
這篇文章主要介紹了使用Spring Boot搭建Java web項目及開發(fā)過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06