Java中的对象、private关键字、this关键字、构造方法
面向對象
概述:Java一種面向對象的程序設計語言,面向對象思想是一種程序設計思想,在面向對象思想的指引下,使用Java語言去設計、開發計算機程序。
這里的對象泛指現實中一切事物,每種事物都具備自己的屬性和行為。
面向對象思想:就是在計算機程序設計過程中,參照現實中事物,將事物的屬性特征、行為特征抽象出來,描述成計算機事件的設計思想。 它區別于面向過程思想,強調的是通過調用對象的行為來實現功能,而不是自己一步一步的去操作實現。
面向對象思想是一種更符合我們思考習慣的思想,它可以將復雜的事情簡單化,并將我們從執行者變成了指揮者。面向對象的語言中,包含了三大基本特征,即封裝、繼承和多態。
面向過程思想:強調完成某件事的具體步驟。
/* 面向過程:當實現一個功能時,每一步都要親力親為,詳細到每一個細節。 面向對象:當實現一個功能時,不關心具體的步驟,而是找一個可以實現此功能的事物幫助我們完成,這個事物即面向對象。 */ import java.util.Arrays; public class Javaobject{public static void main(String[] args){int[] arr1 = new int[]{1,2,3,4,5};// 1.使用面向對象過程打印數組arr1:System.out.print("[");//println中ln表示換行,可以去掉ln表示不換行打印for(int i = 0; i < arr1.length; i ++){if(i < arr1.length - 1){System.out.print(arr1[i] + " ,");}else{System.out.print(arr1[i]);}};System.out.println("]");//[1,2,3,4,5]// 2.使用java中內置Arrays.toString()方法實現打印arr1:// 找一個JDK給我們提供的Arrays類,Arrays類中有一個toString方法,它可以幫助我們完成這個功能,體現了面向對象的思想。System.out.println(Arrays.toString(arr1));//[1, 2, 3, 4, 5],需要注意:使用此方法時,應該導入java中util中的Arrays:import java.util.Arrays;} }類:一組相關屬性和行為的集合。可以看成是一類事物的模板,使用事物的屬性特征和行為特征來描述該類事物。
屬性:某事物的狀態信息。
行為:某事物可以做某些事的能力(方法)。
對象:一類事物的具體體現。對象是類的一個實例,具備該類事物的屬性和行為。
類與對象的關系:類是對一類事物的描述,是抽象的,而對象是一類事物的具體實例,是具體的;對象是一個類的具體體現,類是一個對象的模板。
定義類:定義類指的是定義類的成員,其中包括成員變量和成員方法;成員變量是定義在類當中,方法外的變量;成員方法是定義時去掉static(有static為普通方法的定義)。
// 1.定義一個類(學生):學生類有成員變量(屬性)和成員方法(行為)等,如: public class Students{//public static是固定寫法沒錯,但是在定義類時,這里無需static為成員方法,普通方法才使用static// 成員變量:直接定義在類中(方法外)的變量為成員變量String name;//名字int age;//年齡byte sex;//性別double weight;//體重double height;//體重// 成員方法:定義方法時不寫static為成員方法,寫static為普通方法public void sleep(){System.out.println("睡覺");};public void eat(){System.out.println("吃飯");};public void study(){System.out.println("學習");};public void play(String sth){System.out.println("玩" + sth);}; }創建對象并使用:
創建對象并使用分三步:
1.導包:指明要使用的類在什么位置,其格式為:import 包名稱.類名稱;如果類是在當前包中,那么可以不用導包,直接new一個對象。
2.new一個對象:使用關鍵字new創建某類的實例,其格式為:類名稱 對象名(自定義)= new 類名稱();
3.使用類成員:使用成員變量其格式為:對象名.成員變量 = 值;使用成員方法其格式為:對象名.成員方法(參數);
// import 包名.Students;// 1.導入包中的某類,頂部導入,這里為同一個包中,可以省略 public class Xiaoming{public static void main(String[] args){// 2.new一個對象(類的實例):Students xiaoming = new Students();// 3. 使用成員變量:// 給成員變量賦值:xiaoming.name = "小明";xiaoming.age = 18;xiaoming.sex = 1;xiaoming.height = 170;xiaoming.weight = 62.5;// 打印成員變量的值System.out.println(xiaoming.name);//小明System.out.println(xiaoming.weight);//62.5// 成員方法傳參數并調用:xiaoming.play("籃球");//玩籃球xiaoming.eat();//吃飯} }一個對象內存圖:
兩個對象同一類內存圖(手機實例做參考):
兩個對象指向同一地址內存圖(手機實例做參考):
對象作為參數傳入方法:
對象作為方法返回值:
// 1.將對象作為方法的返回值進行使用: public class ReturnStudentsobj{public static void main(String[] args){// 1-2:調用creatStudentInfo方法來創建對象,并將返回值賦值給變量:Students stu1 = creatStudentInfo("kuhai",23,(byte) 1,60,167);Students stu2 = creatStudentInfo("ConstancyMan",23,(byte) 1,60,167);// 1-3:測試通過creatStudentInfo方法返回值創建的對象:System.out.println(stu1.name);//kuhaiSystem.out.println(stu2.name);//ConstancyMan};// 1-1:定義個方法creatStudentInfo來創建一個對象并返回這個對象:public static Students creatStudentInfo(String names,int ages,byte sexs,double weights,double heights){Students stu = new Students();stu.name = names;stu.age = ages;stu.sex = sexs;stu.weight = weights;stu.height = heights;return stu;}; };成員變量和局部變量的區別:
1.定義位置不同:局部變量定義在方法內部;成員變量定義在類中。
2.作用范圍(作用域)不同:局部變量只有在方法當中有效;而成員變量在整個類可以使用,包括方法中。
3.默認值不同:局部變量沒有默認值;成員變量有默認值。
4.內存位置不同:局部變量位于棧內存;成員變量位于堆內存。
5.生命周期不同:局部變量隨著方法進棧產生,方法出棧消失;成員變量隨著對象創建產生,對象被垃圾回收成員變量消失。
java中封裝:
1.方法即是一種封裝。
2.關鍵字private(私有化)也是一種封裝,其是對成員變量的修飾,避免不合理的值被設置給成員變量。被private修飾的成員變量,超出本類后將不能直接訪問成員變量,需要通過get-和set-方法間接設置和訪問被private修飾的成員變量,如下:
private關鍵字:
創建類:
// 創建一個PrivatePerson類,并使用private關鍵字修飾某些成員變量: public class PrivatePerson{String names;// 1.使用關鍵字private修飾某些成員變量,使其在被賦值時可以合法(例如:年齡不能為負值等)private int age;// int age;// 2.在方法info中使用成員變量,包括被private修飾的成員變量(在本類中是可以直接通過點.的方式訪問的,一旦超出本類就不能直接訪問)public void info(){System.out.println("該用戶的姓名為:"+names+",年齡為:"+age+"歲。");}// 3.此時編譯此類不會報錯,如果不在本類中直接使用age成員變量就會有報錯,此時只能間接的訪問和設置被private修飾的成員變量:// 3-1:設置被private修飾的成員變量其方法是:定義一個方法以參數的形式修改成員變量,在超出類的作用域調用該方法即可,特別強調:方法名應命名為:set+首字母大寫的成員變量名,如:setAgepublic void setAge(int ages){// age = ages;// 4:此時我們可以對傳入的參數進行篩選,使其合法,如:if(ages < 120 && ages > 0){age = ages;}else{age = 18;}}// 3-2:訪問被private修飾的成員變量其方法是:定義一個方法以返回值的形式返回成員變量,在超出本類的作用域調用該方法即可,特別強調:方法名應命名為:get+首字母大寫的成員變量名,如:getAge,但是對于布爾類型要命名為is-格式,如:isManpublic int getAge(){return age;} };實例化對象:
public class NewPersonPrivateage{public static void main(String[] args){// 1.new一個PrivatePerson類的實例:person1,并使用被private關鍵字修飾的成員變量age:PrivatePerson person1 = new PrivatePerson();person1.names = "luck";// person1.age = 18;//1-1:通過private關鍵字修飾的成員變量在超出它自己類后直接使用會報錯:錯誤: age 在 PrivatePerson 中是 private 訪問控制// 1-2:通過調用實例化對象person1下的setAge和getAge方法設置和訪問被private修飾的成員變量:// 設置成員變量age:person1.setAge(-10);// 訪問成員變量age:int param = person1.getAge();System.out.println("person1的名字為:"+person1.names+",年齡為:"+param+"歲。");//此時不會報錯,并打印出了:person1的名字為:luck,年齡為:18歲;這里類似JavaScript中jsonp跨域請求數據。} }this關鍵字:
當方法的局部變量和類的成員變量重名時,根據就近原則使用變量,若要訪問成員變量,可以在成員變量前面加this點.如:
//1.創建類: public class ThisKey{String names;public void sayHello(String names){System.out.println(names+"說:"+names+",你好!");//luck說:luck,你好!System.out.println(this.names+"說:"+names+",你好!");//jack說:luck,你好!//this代表當前類,實例化對象后代表實例化的對象} } //2.實例化對象: public class ThisKeyObj{public static void main(String[] args){ThisKey thiskeyobj = new ThisKey();thiskeyobj.names = "jack";thiskeyobj.sayHello("luck");/*System.out.println(names+"說:"+names+",你好!");//luck說:luck,你好!System.out.println(this.names+"說:"+names+",你好!");//jack說:luck,你好!不使用this方法會使用參數,若使用this方法會使用成員變量!*/ }; }構造方法:
構造方法是專門用來創建對象的方法,通過關鍵字new創建對象時,其實就是在調用構造方法,其格式為:public 類名稱(參數類型 參數名稱){方法體}
注意事項:
1.構造方法名稱和所在類名稱一致
2.構造方法不能寫返回值,void也不用寫
3.如果沒有編寫任何構造方法,編譯器將自動編譯一個構造方法,其什么事也不做。
4,如果自己編寫了構造方法,編譯器將不再自動編譯一個構造方法,使用自己編寫的構造方法即可。
5.構造方法也可以重載。
public class Person{public Person(){}; }定義一個標準類:
標準類也叫Java Bean,一個標準的類要滿足以下幾點:
1.所有成員變量使用private關鍵字進行修飾。
2.為每一個成員變量編寫get-和set-方法。
3.編寫一個無參數的構造方法。
4.編寫一個全參數的構造方法。
public class Student {private String name; // 姓名private int age; // 年齡public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }提示:本文圖片等素材來源于網絡,若有侵權,請發郵件至郵箱:810665436@qq.com聯系筆者刪除。
筆者:苦海
總結
以上是生活随笔為你收集整理的Java中的对象、private关键字、this关键字、构造方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 分类汇总_sql多级分类汇总
- 下一篇: java美元兑换,(Java实现) 美元