一篇文章帶你深入了解Java基礎(chǔ)(4)
1、private實現(xiàn)封裝處理
如果像想要知道封裝,首先必須清楚如果沒有封裝會怎么樣?
沒有封裝方法中的屬性,在所有方法被調(diào)用后都可以進(jìn)行無權(quán)限的訪問。而當(dāng)進(jìn)行了封裝操作之后,在實例化對象訪問該方法的時候會出現(xiàn)無法訪問的問題。
TestDemo1.java:11: 錯誤: name 在 Person 中是 private 訪問控制
per.name = "張三";
^
TestDemo1.java:12: 錯誤: age 在 Person 中是 private 訪問控制
per.age = 13;
^
2 個錯誤
解決該問題就需要通過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實現(xiàn)封裝的最大特征在于:只允許本類,而不允許外類訪問
private只是封裝的第一步,如果要學(xué)明白,還需要學(xué)習(xí)多態(tài)、繼承。
2、構(gòu)造方法與匿名對象
構(gòu)造方法就是在使用關(guān)鍵字new實例化新對象的時候進(jìn)行調(diào)用,但是對于構(gòu)造方法需要遵守以下原則
- 方法名稱必須與類名稱相同,并且構(gòu)造的方法沒有返回值,每個類中一定至少有一個構(gòu)造方法,如果類中沒有明確的定義任何一個構(gòu)造方法,如果類中沒有定義任何一個構(gòu)造方法,那么將自動生成一個無參的構(gòu)造方法
- 構(gòu)造方法是在new對象的時候才執(zhí)行
疑問:既然構(gòu)造方法中沒有返回數(shù)據(jù),為什么不使用void囊?
現(xiàn)在類中的組成:屬性、普通方法、構(gòu)造方法
屬性是在對象開辟堆內(nèi)存的時候開辟空間
構(gòu)造方法是在使用關(guān)鍵字new的同時調(diào)用
普通方法是在new實例化對象完成之后進(jìn)行調(diào)用的
構(gòu)造方法的作用:
- 構(gòu)造方法的調(diào)用和對象的內(nèi)存分配幾乎是同步完成,所以可以利用構(gòu)造方法設(shè)置類中的屬性內(nèi)容,構(gòu)造帆帆噶可以給類中的屬性進(jìn)行初始化
- 通過構(gòu)造方法設(shè)置內(nèi)容,實際上可以避免重復(fù)的setter調(diào)用了
- setter方法除了具備有設(shè)置內(nèi)容之外,也可以承擔(dān)修改數(shù)據(jù)的操作。
- 既然構(gòu)造方法本身屬于方法,那么方法就一定可以重載,而構(gòu)造方法的重載更加簡單,因為方法名稱就是類名稱所以能夠做的只是實現(xiàn)參數(shù)的類型和個數(shù)的不同。
在定義若干個構(gòu)造方法的時候按照參數(shù)的個數(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();
}
}

3、簡單java類
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());
}
}
4、數(shù)組
數(shù)組屬于引用類型,所以在使用前一定要開辟空間,本身除了聲明并開辟空間之外還有另一種開辟模式,采用我們的分布模式開辟數(shù)組空間。如果使用數(shù)組不開辟空間,會出現(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ù)組在開發(fā)之中一定會使用,但是像一些講解的時候這么用的數(shù)組少了,在以后實際開發(fā),會更多使用數(shù)組概念,而直接使用數(shù)組99%的情況下只是做for循環(huán)數(shù)組。
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
在IntelliJ IDEA 搭建springmvc項目配置debug的教程詳解
這篇文章主要介紹了在IntelliJ IDEA 搭建springmvc項目配置debug的教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Springboot解決no main manifest attribute錯誤
在開發(fā)Springboot項目時,使用java -jar命令運行jar包可能出現(xiàn)no main manifest attribute錯誤,本文就來介紹一下該錯誤的解決方法,感興趣的可以了解一下2024-09-09
SpringBoot配置連接兩個或多個數(shù)據(jù)庫的實現(xiàn)
本文主要介紹了SpringBoot配置連接兩個或多個數(shù)據(jù)庫的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
使用Idea簡單快速搭建springcloud項目的圖文教程
這篇文章主要介紹了使用Idea簡單快速搭建springcloud項目,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
springboot整合Dubbo與Feign的實現(xiàn)?(無注冊中心)
本文主要介紹了springboot整合Dubbo與Feign的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
基于springboot微信公眾號開發(fā)(微信自動回復(fù))
這篇文章主要介紹了基于springboot微信公眾號開發(fā)(微信自動回復(fù)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
SpringBoot如何優(yōu)雅的整合Swagger Api自動生成文檔
在多人協(xié)作的開發(fā)過程中,API文檔不僅可以減少等待,也能保證開發(fā)的持續(xù)進(jìn)行,這篇文章主要給大家介紹了關(guān)于SpringBoot如何優(yōu)雅的整合Swagger Api自動生成文檔的相關(guān)資料,需要的朋友可以參考下2021-07-07

