您好,登錄后才能下訂單哦!
這篇文章主要介紹了java基礎之如何封裝處理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
如果像想要知道封裝,首先必須清楚如果沒有封裝會怎么樣?
沒有封裝方法中的屬性,在所有方法被調用后都可以進行無權限的訪問。而當進行了封裝操作之后,在實例化對象訪問該方法的時候會出現無法訪問的問題。
TestDemo1.java:11: 錯誤: name 在 Person 中是 private 訪問控制 per.name = "張三"; ^ TestDemo1.java:12: 錯誤: age 在 Person 中是 private 訪問控制 per.age = 13; ^ 2 個錯誤
解決該問題就需要通過getter、setter進行賦值、取值的操作。
class Person{ private String name; private int age; public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public void info(){ System.out.println("name = "+ name +" \nage = " + age); } } public class TestDemo1{ public static void main(String args[]){ Person per = new Person(); per.setName("張三"); per.setAge(13); per.info(); } }
private實現封裝的最大特征在于:只允許本類,而不允許外類訪問
private只是封裝的第一步,如果要學明白,還需要學習多態、繼承。
構造方法就是在使用關鍵字new實例化新對象的時候進行調用,但是對于構造方法需要遵守以下原則
方法名稱必須與類名稱相同,并且構造的方法沒有返回值,每個類中一定至少有一個構造方法,如果類中沒有明確的定義任何一個構造方法,如果類中沒有定義任何一個構造方法,那么將自動生成一個無參的構造方法
構造方法是在new對象的時候才執行
疑問:既然構造方法中沒有返回數據,為什么不使用void囊?
現在類中的組成:屬性、普通方法、構造方法
屬性是在對象開辟堆內存的時候開辟空間
構造方法是在使用關鍵字new的同時調用
普通方法是在new實例化對象完成之后進行調用的
構造方法的作用:
構造方法的調用和對象的內存分配幾乎是同步完成,所以可以利用構造方法設置類中的屬性內容,構造帆帆噶可以給類中的屬性進行初始化
通過構造方法設置內容,實際上可以避免重復的setter調用了
setter方法除了具備有設置內容之外,也可以承擔修改數據的操作。
既然構造方法本身屬于方法,那么方法就一定可以重載,而構造方法的重載更加簡單,因為方法名稱就是類名稱所以能夠做的只是實現參數的類型和個數的不同。
在定義若干個構造方法的時候按照參數的個數采用升序或降序進行排列。
class Person{ private String name; private int age; public Person(){} public Person(String name){ name = name; } public Person(String name, int age){ name = name; age = age; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public void info(){ System.out.println("name = "+ name +" \nage = " + age); } } public class TestDemo1{ public static void main(String args[]){ Person per = new Person("李四",80); per.setName("張三"); per.setAge(13); per.info(); } }
class Emp{ private int empno; private String ename; private String job; private double sal; private double comm; public Emp(int no,String name,String j,double s,double c){ setEmpno(no); setEname(name); setJob(j); setSal(s); setComm(c); } public void setEmpno(int no){ empno = no; } public void setEname(String name){ ename = name; } public void setJob(String job){ job = job; } public void setSal(double s){ sal = s; } public void setComm(double c ){ comm = c; } public int getEmpnoP(){ return empno; } public String getEname(){ return ename; } public String getJob(){ return job; } public double getSal(){ return sal; } public double getComm(){ return comm; } public String getInfo(){ return "empno = " + empno + "\n" + "ename = " +ename + "\n" + "job = " +job + "\n" + "sal = " +sal + "\n" + "comm = " +comm ; } } public class TestDemo2{ public static void main(String args[]){ //測試類 System.out.printf(new Emp(2021,"Joker","CEO",2000.0,0.0).getInfo()); } }
數組屬于引用類型,所以在使用前一定要開辟空間,本身除了聲明并開辟空間之外還有另一種開辟模式,采用我們的分布模式開辟數組空間。如果使用數組不開辟空間,會出現NullPointerException異常。
public class TestDemo3{ public static void main(String args[]){ //第一種聲明的方式 int [] num = new int [3]; //第二種聲明數組的方式 int [] num = null; num = new int [3]; num[0] = 0; num[1] = 1; num[2] = 2; for(int i = 0;i < num.length ; i++){ System.out.println(num[i]); } } }
數組在開發之中一定會使用,但是像一些講解的時候這么用的數組少了,在以后實際開發,會更多使用數組概念,而直接使用數組99%的情況下只是做for循環數組。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“java基礎之如何封裝處理”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。