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