記 2018/11/08 面向物件基礎學習 1#
一、類與物件概述
1、為了把日常生活中實物用學習語言描述出來
2、如何描述現實事物
屬性:就是該事物的描述資訊(名詞)
行為:就是該事物能夠做什麼(動詞)
3、Java中最基本單位是類
成員變數:事物的屬性
成員方法:事物的行為
4、定義類其實就是定義類的成員(成員變數和成員方法 )
成員變數 和在類中,方法外
成員方法 去掉satatic
5、類和物件的概念
類: 是一組相關的屬性和行為的集合
物件: 是該類事物的具體體現
類定義例項:
classStudent String name; int age; String gender; public void study() { System.out.println("我要學習"); } public void sleep() { System.out.println("我要睡覺"); }
二、面向物件(類的使用)
1、建立物件格式
類名 物件名 = new 類名();
2、使用成員變數
物件名.變數名
3、使用成員方法
物件名.方法名(...)
類使用例項
class Test1_Phone { public static void main(String[] args) { //建立物件 Phone p = new Phone(); //呼叫物件中的屬性並賦值 p.brand = "iphone"; p.price = 998; System.out.println(p.brand + "..." + p.price); //呼叫成員方法 p.call(); p.sendMessage(); p.playGame(); } }/* * 模仿學生類,讓學生自己完成 * 屬性:品牌(brand)價格(price) * 行為:打電話(call),發信息(sendMessage)玩遊戲(playGame) */ class Phone { String brand; //品牌 int price; //價格 public void call() { //打電話 System.out.println("打電話"); } public void sendMessage() { //發信息 System.out.println("發信息"); } public void playGame() { //玩遊戲 System.out.println("玩遊戲"); } }
三、成員變數和區域性變數的區別
1、在型別中的位置不同
成員變數:在類中方法外
區域性變數:在方法定義中或者方法宣告上
2、在記憶體中的位置不同
成員變數:在堆記憶體中(成員變數屬於物件,物件進對記憶體)
區域性變數:在棧記憶體中(區域性變數屬於方法,隨著方法的呼叫完畢彈棧消失)
3、生命週期不同
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
4、初始化值不同
成員變數:由預設初始化值 String--null int--0 boolean--false...
區域性變數:沒有預設初始化值,必須定義,賦值,然後才能使用
5、注意事項
區域性變數名稱可以和成員變數名稱一樣,在方法中使用的時候採用就近原則
基本資料型別比那輛包括:byte,short,int,long,float,double,boolean,char
引用資料型別變數包括:陣列,類,介面,列舉
四、引用型別當形式引數
如果一個方法的形式引數是一個類型別(引用型別,這裡其實需要該類的物件)。
五、匿名物件的概述和應用
1、什麼是匿名物件--沒有名字的物件
2、匿名物件應用場景
呼叫方法,僅僅只呼叫一次的時候。
匿名物件可以作為實際引數傳遞
例項
class Demo2_Car { public static void main(String[] args) { /*Car c1 = new Car(); //建立有名字的物件 c1.run(); c1.run(); new Car().run(); //匿名物件呼叫方法 new Car().run(); */ //匿名物件只適合對方法的一次呼叫,因為呼叫多次就會產生多個物件,不如用有名字的物件 //匿名物件是否可以呼叫屬性並賦值?有什麼意義? /* 匿名物件可以呼叫屬性,但是沒有意義,因為呼叫後就變成垃圾 如果需要賦值還是用有名字物件 */ new Car().color = "red"; new Car().num = 8; new Car().run(); } } class Car { String color; //顏色 int num; //輪胎數 public void run() { System.out.println(color + "..." + num); } }
六、封裝的概述
1、是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
2、好處
隱藏實現細節,提供公共訪問方式
提高程式碼複用性
提高安全性
3、原則
將不需要對外提供的內容都隱藏起來
把屬性隱藏,提供公共方法對其訪問
七、private關鍵字概述和特點
特點:
是一個許可權修飾符
可以修飾成員變數和成員方法
被其修飾的成員只能在本類中被訪問
八、this關鍵字
this代表當前物件的引用
用來區分成員變數和區域性變數重名
例項
class Demo2_Phone { public static void main(String[] args) { Phone p1 = new Phone(); p1.setBrand("三星"); p1.setPrice(5288); System.out.println(p1.getBrand() + "..." + p1.getPrice()); p1.call(); p1.sendMessage(); p1.playGame(); } } /* 手機類 屬性:品牌brand,價格price 行為:打電話call,發簡訊sendMessage,玩遊戲,playGame */ class Phone { //java bean private String brand; //品牌 private int price; //價格 public void setBrand(String brand) { //設定品牌 this.brand = brand; } public String getBrand() { //獲取品牌 return this.brand; //this.可以省略,你不加系統會預設給你加 } public void setPrice(int price) { //設定價格 this.price = price; } public int getPrice() { //獲取價格 return price; } public void call() { //打電話 System.out.println("打電話"); } public void sendMessage() { //發簡訊 System.out.println("發簡訊"); } public void playGame() { //玩遊戲 System.out.println("玩遊戲"); } }