Java入門之~面向對象

      網(wǎng)友投稿 829 2022-05-29

      1. 類和對象

      1.1 類和對象的理解

      客觀存在的事物皆為對象 ,所以我們也常常說萬物皆對象。

      類的理解

      類是對現(xiàn)實生活中一類具有共同屬性和行為的事物的抽象

      類是對象的數(shù)據(jù)類型,類是具有相同屬性和行為的一組對象的集合

      簡單理解:類就是對現(xiàn)實事物的一種描述

      類的組成

      屬性:指事物的特征,例如:手機事物(品牌,價格,尺寸)

      行為:指事物能執(zhí)行的操作,例如:手機事物(打電話,發(fā)短信)

      類和對象的關(guān)系

      類:類是對現(xiàn)實生活中一類具有共同屬性和行為的事物的抽象

      對象:是能夠看得到摸的著的真實存在的實體

      Java入門之~面向?qū)ο? title=

      簡單理解:類是對事物的一種描述,對象則為具體存在的事物

      1.2 類的定義

      類的組成是由屬性和行為兩部分組成

      屬性:在類中通過成員變量來體現(xiàn)(類中方法外的變量)

      行為:在類中通過成員方法來體現(xiàn)(和前面的方法相比去掉static關(guān)鍵字即可)

      類的定義步驟:

      ①定義類

      ②編寫類的成員變量

      ③編寫類的成員方法

      public class 類名 { // 成員變量 變量1的數(shù)據(jù)類型 變量1; 變量2的數(shù)據(jù)類型 變量2; … // 成員方法 方法1; 方法2; }

      示例代碼:

      /* 手機類: 類名: 手機(Phone) 成員變量: 品牌(brand) 價格(price) 成員方法: 打電話(call) 發(fā)短信(sendMessage) */ public class Phone { //成員變量 String brand; int price; //成員方法 public void call() { System.out.println("打電話"); } public void sendMessage() { System.out.println("發(fā)短信"); } }

      1.3 對象的使用

      創(chuàng)建對象的格式:

      類名 對象名 = new 類名();

      調(diào)用成員的格式:

      對象名.成員變量

      對象名.成員方法();

      示例代碼

      /* 創(chuàng)建對象 格式:類名 對象名 = new 類名(); 范例:Phone p = new Phone(); 使用對象 1:使用成員變量 格式:對象名.變量名 范例:p.brand 2:使用成員方法 格式:對象名.方法名() 范例:p.call() */ public class PhoneDemo { public static void main(String[] args) { //創(chuàng)建對象 Phone p = new Phone(); //使用成員變量 System.out.println(p.brand); System.out.println(p.price); p.brand = "小米"; p.price = 2999; System.out.println(p.brand); System.out.println(p.price); //使用成員方法 p.call(); p.sendMessage(); } }

      1.4 學(xué)生對象-練習(xí)

      需求:首先定義一個學(xué)生類,然后定義一個學(xué)生測試類,在學(xué)生測試類中通過對象完成成員變量和成員方法的使用

      分析:

      成員變量:姓名,年齡…

      成員方法:學(xué)習(xí),做作業(yè)…

      示例代碼:

      ![1](C:\TeachRes\Java2019\JavaSe01\day07\4-筆記\筆記圖片資源包\1.png)class Student { //成員變量 String name; int age; //成員方法 public void study() { System.out.println("好好學(xué)習(xí),天天向上"); } public void doHomework() { System.out.println("鍵盤敲爛,月薪過萬"); } } /* 學(xué)生測試類 */ public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); //使用對象 System.out.println(s.name + "," + s.age); s.name = "林青霞"; s.age = 30; System.out.println(s.name + "," + s.age); s.study(); s.doHomework(); } }

      2. 對象內(nèi)存圖

      2.1 單個對象內(nèi)存圖

      成員變量使用過程

      成員方法調(diào)用過程

      2.2 多個對象內(nèi)存圖

      成員變量使用過程

      成員方法調(diào)用過程

      總結(jié):

      多個對象在堆內(nèi)存中,都有不同的內(nèi)存劃分,成員變量存儲在各自的內(nèi)存區(qū)域中,成員方法多個對象共用的一份

      2.3 多個對象指向相同內(nèi)存圖

      總結(jié)

      當(dāng)多個對象的引用指向同一個內(nèi)存空間(變量所記錄的地址值是一樣的)

      只要有任何一個對象修改了內(nèi)存中的數(shù)據(jù),隨后,無論使用哪一個對象進行數(shù)據(jù)獲取,都是修改后的數(shù)據(jù)。

      3. 成員變量和局部變量

      3.1 成員變量和局部變量的區(qū)別

      類中位置不同:成員變量(類中方法外)局部變量(方法內(nèi)部或方法聲明上)

      內(nèi)存中位置不同:成員變量(堆內(nèi)存)局部變量(棧內(nèi)存)

      生命周期不同:成員變量(隨著對象的存在而存在,隨著對象的消失而消失)局部變量(隨著方法的調(diào)用而存在,醉著方法的調(diào)用完畢而消失)

      初始化值不同:成員變量(有默認(rèn)初始化值)局部變量(沒有默認(rèn)初始化值,必須先定義,賦值才能使用)

      4. 封裝

      4.1 private關(guān)鍵字

      private是一個修飾符,可以用來修飾成員(成員變量,成員方法)

      被private修飾的成員,只能在本類進行訪問,針對private修飾的成員變量,如果需要被其他類使用,提供相應(yīng)的操作

      提供“get變量名()”方法,用于獲取成員變量的值,方法用public修飾

      提供“set變量名(參數(shù))”方法,用于設(shè)置成員變量的值,方法用public修飾

      示例代碼:

      /* 學(xué)生類 */ class Student { //成員變量 String name; private int age; //提供get/set方法 public void setAge(int a) { if(a<0 || a>120) { System.out.println("你給的年齡有誤"); } else { age = a; } } public int getAge() { return age; } //成員方法 public void show() { System.out.println(name + "," + age); } } /* 學(xué)生測試類 */ public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); //給成員變量賦值 s.name = "林青霞"; s.setAge(30); //調(diào)用show方法 s.show(); } }

      4.2 private的使用

      需求:定義標(biāo)準(zhǔn)的學(xué)生類,要求name和age使用private修飾,并提供set和get方法以及便于顯示數(shù)據(jù)的show方法,測試類中創(chuàng)建對象并使用,最終控制臺輸出? 林青霞,30

      示例代碼:

      /* 學(xué)生類 */ class Student { //成員變量 private String name; private int age; //get/set方法 public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } public void show() { System.out.println(name + "," + age); } } /* 學(xué)生測試類 */ public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); //使用set方法給成員變量賦值 s.setName("林青霞"); s.setAge(30); s.show(); //使用get方法獲取成員變量的值 System.out.println(s.getName() + "---" + s.getAge()); System.out.println(s.getName() + "," + s.getAge()); } }

      4.3 this關(guān)鍵字

      this修飾的變量用于指代成員變量,其主要作用是(區(qū)分局部變量和成員變量的重名問題)

      方法的形參如果與成員變量同名,不帶this修飾的變量指的是形參,而不是成員變量

      方法的形參沒有與成員變量同名,不帶this修飾的變量指的是成員變量

      public class Student { 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 show() { System.out.println(name + "," + age); } }

      4.4 this內(nèi)存原理

      this代表當(dāng)前調(diào)用方法的引用,哪個對象調(diào)用的方法,this就代表哪一個對象

      示例代碼:

      public class StudentDemo { public static void main(String[] args) { Student s1 = new Student(); s1.setName("林青霞"); Student s2 = new Student(); s2.setName("張曼玉"); } }

      圖解:

      4.5 封裝思想

      封裝概述

      是面向?qū)ο笕筇卣髦唬ǚ庋b,繼承,多態(tài))

      是面向?qū)ο缶幊陶Z言對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內(nèi)部的,外界是無法直接操作的

      封裝原則

      將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問

      成員變量private,提供對應(yīng)的getXxx()/setXxx()方法

      封裝好處

      通過方法來控制成員變量的操作,提高了代碼的安全性

      把代碼用方法進行封裝,提高了代碼的復(fù)用性

      5. 構(gòu)造方法

      5.1 構(gòu)造方法概述

      構(gòu)造方法是一種特殊的方法

      作用:創(chuàng)建對象 Student stu = new Student();

      格式:

      public class 類名{

      修飾符 類名( 參數(shù) ) {

      }

      }

      功能:主要是完成對象數(shù)據(jù)的初始化

      示例代碼:

      class Student { private String name; private int age; //構(gòu)造方法 public Student() { System.out.println("無參構(gòu)造方法"); } public void show() { System.out.println(name + "," + age); }}/* 測試類 */public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s = new Student(); s.show(); }}

      5.2 構(gòu)造方法的注意事項

      構(gòu)造方法的創(chuàng)建

      如果沒有定義構(gòu)造方法,系統(tǒng)將給出一個默認(rèn)的無參數(shù)構(gòu)造方法

      如果定義了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的構(gòu)造方法

      構(gòu)造方法的重載

      如果自定義了帶參構(gòu)造方法,還要使用無參數(shù)構(gòu)造方法,就必須再寫一個無參數(shù)構(gòu)造方法

      推薦的使用方式

      無論是否使用,都手工書寫無參數(shù)構(gòu)造方法

      重要功能!

      可以使用帶參構(gòu)造,為成員變量進行初始化

      示例代碼

      /* 學(xué)生類 */class Student { private String name; private int age; public Student() {} public Student(String name) { this.name = name; } public Student(int age) { this.age = age; } public Student(String name,int age) { this.name = name; this.age = age; } public void show() { System.out.println(name + "," + age); }}/* 測試類 */public class StudentDemo { public static void main(String[] args) { //創(chuàng)建對象 Student s1 = new Student(); s1.show(); //public Student(String name) Student s2 = new Student("林青霞"); s2.show(); //public Student(int age) Student s3 = new Student(30); s3.show(); //public Student(String name,int age) Student s4 = new Student("林青霞",30); s4.show(); }}

      5.3 標(biāo)準(zhǔn)類制作

      需求:定義標(biāo)準(zhǔn)學(xué)生類,要求分別使用空參和有參構(gòu)造方法創(chuàng)建對象,空參創(chuàng)建的對象通過setXxx賦值,有參創(chuàng)建的對象直接賦值,并通過show方法展示數(shù)據(jù)。

      示例代碼:

      class Student { //成員變量 private String name; private int age; //構(gòu)造方法 public Student() { } public Student(String name, int age) { this.name = name; this.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 show() { System.out.println(name + "," + age); }}/* 創(chuàng)建對象并為其成員變量賦值的兩種方式 1:無參構(gòu)造方法創(chuàng)建對象后使用setXxx()賦值 2:使用帶參構(gòu)造方法直接創(chuàng)建帶有屬性值的對象*/public class StudentDemo { public static void main(String[] args) { //無參構(gòu)造方法創(chuàng)建對象后使用setXxx()賦值 Student s1 = new Student(); s1.setName("林青霞"); s1.setAge(30); s1.show(); //使用帶參構(gòu)造方法直接創(chuàng)建帶有屬性值的對象 Student s2 = new Student("林青霞",30); s2.show(); }}

      Java 面向?qū)ο缶幊?/p>

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:一文搞定 Linux 常用高頻命令
      下一篇:SVN 客戶端基本用法
      相關(guān)文章
      国产精品久久亚洲一区二区| 亚洲中文字幕久久精品无码A| 大桥未久亚洲无av码在线| 亚洲大片免费观看| 亚洲首页在线观看| 久久久久亚洲AV无码网站| 亚洲卡一卡2卡三卡4卡无卡三| 亚洲伊人久久大香线蕉综合图片| 亚洲人成网站观看在线播放| 亚洲高清最新av网站| 亚洲人成人无码网www国产| 久久影院亚洲一区| 国外亚洲成AV人片在线观看| 国产亚洲色婷婷久久99精品91| 久久影视国产亚洲| 亚洲AV无一区二区三区久久| 亚洲V无码一区二区三区四区观看| 亚洲人成人网站色www| 亚洲第一极品精品无码久久| 亚洲高清在线观看| 亚洲资源在线视频| 亚洲伊人久久大香线蕉在观| 国产亚洲精品影视在线| 亚洲色欲啪啪久久WWW综合网| 亚洲成在人线aⅴ免费毛片| 伊人久久亚洲综合影院| 久久久久亚洲av成人无码电影 | 中文字幕在线亚洲精品| 国产成人亚洲精品狼色在线| 亚洲精品成人片在线播放| 亚洲av网址在线观看| 亚洲精品**中文毛片| 国产成人精品亚洲日本在线| 亚洲熟女综合一区二区三区| 含羞草国产亚洲精品岁国产精品| 亚洲区日韩区无码区| 亚洲va无码专区国产乱码| 亚洲第一成年网站大全亚洲| 亚洲精品456人成在线| 国产精品亚洲专一区二区三区| 亚洲精品视频免费观看|