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