摘要:面向?qū)ο笏枷敫攀隽私饷嫦驅(qū)ο箝_發(fā)就是不斷的創(chuàng)建對象,使用對象,指揮對象做事情。面向?qū)ο笤O(shè)計(jì)其實(shí)就是在管理和維護(hù)對象之間的關(guān)系。建議文件名稱和測試類名稱一致。
1.面向?qū)ο笏枷敫攀?了解)
A:面向?qū)ο箝_發(fā)就是不斷的創(chuàng)建對象,使用對象,指揮對象做事情。
B:面向?qū)ο笤O(shè)計(jì)其實(shí)就是在管理和維護(hù)對象之間的關(guān)系。
C:面向?qū)ο筇卣鞣庋b(encapsulation)、繼承(inheritance)、多態(tài)(polymorphism)
類是對某一類事物共性的抽象概念,而對象描述的是一個(gè)具體的產(chǎn)物。
每一個(gè)屬性的集合就構(gòu)成了一個(gè)對象,但是所有的屬性都應(yīng)該是群體的定義,而群體的定義就形成了一個(gè)類。
類是一個(gè)模板,而對象才是類可以使用的實(shí)例。
在類之中一般會(huì)有兩個(gè)組成:
成員屬性:(Field)有時(shí)候會(huì)簡化成其為屬性比如——年齡,姓名,性別
操作方法:(Method)定義對象具有的處理行為比如——唱歌、跳舞、游泳、運(yùn)動(dòng)
A:我們學(xué)習(xí)編程是為了什么
為了把我們?nèi)粘I钪袑?shí)物用學(xué)習(xí)語言描述出來
B:我們?nèi)绾蚊枋霈F(xiàn)實(shí)世界事物
屬性 就是該事物的描述信息(事物身上的名詞)
行為 就是該事物能夠做什么(事物身上的動(dòng)詞)
C:Java中最基本的單位是類,Java中用class描述事物也是如此
成員變量 就是事物的屬性
成員方法 就是事物的行為
D:定義類其實(shí)就是定義類的成員(成員變量和成員方法)
a:成員變量 和以前定義變量是一樣的,只不過位置發(fā)生了改變。在類中,方法外。
b:成員方法 和以前定義方法是一樣的,只不過把static去掉,后面在詳細(xì)講解static的作用。
學(xué)生類的使用(掌握)
A:文件名問題
在一個(gè)java文件中寫兩個(gè)類:一個(gè)基本的類,一個(gè)測試類。
建議:文件名稱和測試類名稱一致。
B:如何使用對象?
創(chuàng)建對象并使用
格式:類名 對象名 = new 類名();
對象名,其實(shí)就是合法的標(biāo)識(shí)符:如果是一個(gè)單詞,所有字母小寫;如果多個(gè)單詞,從第二個(gè)單詞開始首字母大寫
C:如何使用成員變量呢?
對象名.變量名
D:如何使用成員方法呢?
對象名.方法名(...)
3.學(xué)生類案例演示* 屬性:姓名,年齡,性別 * 行為:學(xué)習(xí),睡覺 class JavaObject { public static void main(String [] args) { //類名 對象名 = new 類名(); Student s = new Student(); //調(diào)用屬性并賦值 s.name = "張三"; s.age = 23; s.gender = "男"; System.out.println(s.name + "..." + s.age + "..." + s.gender); //使用變量 //調(diào)用方法 s.study(); s.sleep(); } } class Student { String name; //姓名 int age; //年齡屬性 String gender; //性別屬性 public void study() { //定義學(xué)習(xí)的方法; System.out.println("學(xué)生學(xué)習(xí)"); } public void sleep() { System.out.println("學(xué)生睡覺"); } }4.一個(gè)對象的內(nèi)存圖
* 車 * 成員變量:顏色,輪胎數(shù) * 成員方法:跑 class JavaObject { public static void main(String [] args) { Car c = new Car(); //創(chuàng)建對象 c.color = "red";//調(diào)用屬性并賦值 c.num = 4; c.run();//調(diào)用方法 Car c2 = new Car(); c2.color = "black"; c2.num = 3 ; c2.run(); c2 = null; //當(dāng)引用設(shè)置為null,空指針異常。 c2.run(); Car c3 = c2; c2.run(); } } class Car { String color; //顏色 int num; //輪胎數(shù) public void run() { System.out.println("color" + num); } }5.成員變量和局部變量的區(qū)別Person(掌握)
A:在類中的位置不同
成員變量:在類中方法外
局部變量:在方法定義中或者方法聲明上
B:在內(nèi)存中的位置不同
成員變量:在堆內(nèi)存(成員變量屬于對象,對象進(jìn)堆內(nèi)存)
局部變量:在棧內(nèi)存(局部變量屬于方法,方法進(jìn)棧內(nèi)存)
C:生命周期不同
成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失
D:初始化值不同
成員變量:有默認(rèn)初始化值(null或0)
局部變量:沒有默認(rèn)初始化值;使用前必須定義,賦值,然后才能使用。
注意事項(xiàng):
局部變量名稱可以和成員變量名稱一樣,在方法中使用的時(shí)候,采用的是就近原則(why可以同名?)。
基本數(shù)據(jù)類型變量包括哪些:byte,short,int,long,float,double,boolean,char
引用數(shù)據(jù)類型變量包括哪些:數(shù)組,類,接口,枚舉
class JavaObject { public static void main(String [] args) { Person p = new Person(); p.speak(); } } class Person { String name; //成員變量 int num; public void speak() { //x和num都是局部變量 int num = 10; System.out.println(num); System.out.println(name); //就近原則 } }6.方法的形式參數(shù)是類名的時(shí)候如何調(diào)用(掌握)
A:方法的參數(shù)是類名public void print(Student s){}//print(new Student());
如果你看到了一個(gè)方法的形式參數(shù)是一個(gè)類(引用數(shù)據(jù)類型),這里其實(shí)需要的是該類的對象(new地址值)。
(~ 記住: 引用數(shù)據(jù)類型當(dāng)做形式參數(shù)的時(shí)候給的是地址值;二基本數(shù)據(jù)類型當(dāng)做形參的時(shí)候給的是值)
class JavaObject { public static void main(String [] args) { print(10); //賦值 Student s = new Student(); //創(chuàng)建對象 print(s); } public static void print(int x) { //形式參數(shù)是基本數(shù)據(jù)類型,傳遞的值 System.out.println(x); } //形式參數(shù)是引用數(shù)據(jù)類型,傳遞的地址值 public static void print(Student stu) { //Student stu = new Student(); stu.name = "張三"; stu.age = 23; stu.speak(); } } class Student { String name; //成員變量 int age; public void speak() { //局部變量 System.out.println(name + "..." + age); } }7.匿名對象的概述和應(yīng)用Car(掌握)
沒有名字的對象叫做匿名對象;
只適合調(diào)用一次的時(shí)候。優(yōu)點(diǎn)是節(jié)省代碼,調(diào)用完畢就是垃圾,可以被垃圾回收器回收。
a:調(diào)用方法
class JavaObject { public static void main(String [] args) { //Car c1 = new Car(); //創(chuàng)建有名字的對象 //c1.run(); //new Car().run(); //匿名對象調(diào)用完就變成垃圾了 //new Car().run(); //匿名對象只適合對方法的一次調(diào)用,因?yàn)檎{(diào)用多次就會(huì)產(chǎn)生多個(gè)對象,不如用有名字對象,否則浪費(fèi)內(nèi)存 //匿名對象可以調(diào)用屬性,但是沒有意義,因?yàn)檎{(diào)用后就變成垃圾,如果需要賦值還是用有名字對象 new Car().color = "red"; new Car().num = 23; new Car().run(); } } class Car { String color; int num; public void run() { System.out.println(color + "..." + num); } }
b:匿名對象可以作為實(shí)際參數(shù)傳遞
class JavaObject { public static void main(String [] args) { /*Car c1 = new Car(); //創(chuàng)建有名字的對象 c1.color = "red"; c1.num = 8; c1.run();*/ //Car c1 = new Car(); //method(c1); //method(new Car()); //Car c2 = new Car(); //method(c2); //method(new Car()); for (int i = 0;i < 10 ;i ++ ) { method(new Car()); } } //抽取方法,提高代碼的復(fù)用性 protected default public static void method(Car cc) { //Car cc = new Car(); cc.color = "red"; cc.num = 8; cc.run(); } }8.封裝的概述(掌握)
A:封裝概述
是指隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式。
B:封裝好處
隱藏實(shí)現(xiàn)細(xì)節(jié),提供公共的訪問方式
提高了代碼的復(fù)用性
提高安全性。
C:封裝原則
將不需要對外提供的內(nèi)容都隱藏起來。
把屬性隱藏,提供公共方法對其訪問。
9.private關(guān)鍵字的概述和特點(diǎn)(掌握) public protected defaultA:人類賦值年齡的問題
B:private關(guān)鍵字特點(diǎn)
a:是一個(gè)權(quán)限修飾符
b:可以修飾成員變量和成員方法
c:被其修飾的成員只能在本類中被訪問
C:案例演示
封裝和private的應(yīng)用:
A:把成員變量用private修飾
B:提供對應(yīng)的getXxx()和setXxx()方法
private僅僅是封裝的一種體現(xiàn)形式,不能說封裝就是私有(講包時(shí)會(huì)有更好的理解)
public class JavaObject { public static void main(String [] args) { System.out.println(""); Person p1 = new Person(); p1.name = "張三"; //p1.age = 23; //p1.speak(); p1.setAge(-17); //int age1 = p1.getAge(); System.out.println(p1.getAge()); } } class Person { String name; private int age; //私有成員變量 public void setAge(int a) { //a = 17 //對外提供公共的訪問方法 if (a > 18 && a<120) { age = a; } else { System.out.println("輸入有誤"); } } public int getAge() { //對外提供公共的訪問方法 return age; } public void speak() { System.out.println(name + "..." + age); } }10.this關(guān)鍵字的概述和應(yīng)用(掌握)
A:this關(guān)鍵字特點(diǎn)
代表當(dāng)前對象的引用 (誰來調(diào)用我,我就代表誰)
B:案例演示
this的應(yīng)用場景
用來區(qū)分成員變量和局部變量重名,調(diào)用成員變量
public class JavaObject { public static void main(String [] args) { System.out.println(""); Person p1 = new Person(); p1.setName("張三"); p1.setAge(23); System.out.println(p1.getName() + "..." + p1.getAge()); Person p2 = new Person(); p2.setName("李四"); p2.setAge(32); p2.speak(); } } class Person { private String name; private int age; public void setName(String name) { this.name = name;//在這里this代表p1的地址值 } public String getName() { return name; } public void setAge(int age) { //a = 17 if (age > 18 && age<120) { this.age = age; } else { System.out.println("輸入有誤"); } } public int getAge() { return age; } public void speak() { System.out.println(name + "..." + age); } }11.手機(jī)類代碼及其測試(掌握)
把手機(jī)類寫成一個(gè)標(biāo)準(zhǔn)類,然后創(chuàng)建對象測試功能。
手機(jī)類
屬性:品牌brand,價(jià)格price
行為:打電話call,發(fā)短信sendMessage,玩游戲playGame
成員方法對應(yīng)的getXxx()和setXxx()方法
public class JavaObject { //創(chuàng)建對象phone public static void main(String [] args) { Phone p1 = new Phone(); //01,主方法聲明p1,堆內(nèi)存創(chuàng)建實(shí)體 p1.setBrand("Apple"); //03進(jìn)棧內(nèi)存 賦值brand p1.setPrice(5288); //05price System.out.println(p1.getBrand() + "..." + p1.getPrice());//09 } } class Phone { private String brand; //品牌 02null private int price; //價(jià)格 0 public void setBrand(String brand) { //設(shè)置品牌04賦值 this.brand = brand; } public String getBrand() { //獲取品牌07 return brand; } public void setPrice(int price) { //設(shè)置價(jià)格 06 this.price = price; } public int getPrice() { //獲取價(jià)格08 return price; } public void call() { System.out.println("打電話"); } public void sendMessage() { System.out.println("發(fā)信息"); } public void palyGame() { System.out.println("打游戲"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76921.html
摘要:外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對象。前提存在一個(gè)類或者接口這里的類可以是具體類也可以是抽象類。 1.package關(guān)鍵字的概述及作用(了解) A:為什么要有包 將字節(jié)碼(.class)進(jìn)行分類存放 包其實(shí)就是文件夾 B:包的概述 舉例: 學(xué)生:增加,刪除,修改,查詢 老師:增加,刪除,修改,查詢 ... 方案1:按照功能分 com.heima.add ...
摘要:每次調(diào)用構(gòu)造都執(zhí)行,并且在構(gòu)造方法前執(zhí)行靜態(tài)代碼塊在類中方法外出現(xiàn),并加上修飾用于給類進(jìn)行初始化,隨著類加載而加載,一般用來給類進(jìn)行初始化,在加載的時(shí)候就執(zhí)行,并且只執(zhí)行一次。的構(gòu)造方法這是一條隱藏語句,用來訪問父類中的空參構(gòu)造。 1.代碼塊的概述和分類(了解)(實(shí)際不用) A:代碼塊概述 在Java中,使用{}括起來的代碼被稱為代碼塊。 B:代碼塊分類 根據(jù)其位置和聲明的不同...
摘要:案例演示抽象類的成員特點(diǎn)抽象類的成員方法特性抽象方法強(qiáng)制要求子類做的事情。抽象類中定義的是該繼承體系的共性功能。 1.多態(tài)的概述及其成員訪問特點(diǎn)代碼體現(xiàn) A:多態(tài)(polymorphic)概述 事物存在的多種形態(tài) B:多態(tài)前提- 1.要有繼承關(guān)系 2.要有方法重寫 3.要有父類引用指向子類對象。 C:多態(tài)中的成員訪問特點(diǎn)之 成員變量:編譯和運(yùn)行都看父類。 成員方法:編...
摘要:如果我們給出了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的無參構(gòu)造方法。概念方便在沒有創(chuàng)建對象的情況下來進(jìn)行調(diào)用方法變量。因?yàn)樗某蓡T全部是靜態(tài)的所以私有了構(gòu)造方法獲取隨機(jī)數(shù)的方法返回帶正號的值,該值大于等于 1.構(gòu)造方法Constructor概述和格式(掌握) A:構(gòu)造方法概述和作用 給對象的數(shù)據(jù)(屬性)進(jìn)行初始化 B:構(gòu)造方法格式特點(diǎn) a:方法名與類名相同(大小寫也要與類名一致) b:...
在過往學(xué)習(xí)的JavaScript都是在基礎(chǔ),現(xiàn)在為大家介紹更為深入的JavaScript知識(shí)。 JavaScript函數(shù) JavaScript函數(shù)和Java函數(shù)是有一部分相似的,所以學(xué)習(xí)起來也會(huì)相對簡單 基本構(gòu)造 1.直接構(gòu)造 //function代表函數(shù)標(biāo)志,name為函數(shù)名稱,參數(shù)可有可無 functionname(參數(shù)){ //... return; } 2....
閱讀 1542·2023-04-26 02:08
閱讀 3135·2021-10-14 09:42
閱讀 7218·2021-09-22 15:34
閱讀 3244·2019-08-30 13:16
閱讀 2738·2019-08-26 13:49
閱讀 1353·2019-08-26 11:59
閱讀 1281·2019-08-26 10:31
閱讀 2175·2019-08-23 17:19