一、本單元知識點概述
(Ⅰ)知識點概述

二、本單元教學目標
(Ⅰ)重點知識目標
1.面向物件
2.類與物件
3.三大特征
(Ⅱ)能力目標
1.能夠理解面向物件的思想
2.能夠明確類與物件關系
3.能夠掌握類的定義格式
4.能夠掌握創建物件格式,并訪問類中的成員
5.能夠完成手機類的練習
6.能夠理解物件的記憶體圖
7.能夠說出成員變數和區域變數的區別
三、知識詳講
8.1 面向物件
8.1.1 面向物件思想概述
Java語言是一種面向物件的程式設計語言,而面向物件思想是一種程式設計思想,我們在面向物件思想的指引下, 使用Java語言去設計、開發計算機程式, 這里的物件泛指現實中一切事物,每種事物都具備自己的屬性和行為,面向物件思想就是在計算機程式設計程序中,參照現實中事物,將事物的屬性特征、行為特征抽象出來,描述成計算機事件的設計思想, 它區別于面向程序思想,強調的是通過呼叫物件的行為來實作功能,而不是自己一步一步的去操作實作,
舉例 洗衣服:
-
面向程序:把衣服脫下來-->找一個盆-->放點洗衣粉-->加點水-->浸泡10分鐘-->揉一揉-->清洗衣服-->擰干-->晾
起來
-
面向物件:把衣服脫下來-->打開全自動洗衣機-->扔衣服-->按鈕-->晾起來
區別:
-
面向程序:強調步驟,
-
面向物件:強調物件,這里的物件就是洗衣機,
8.1.2 面向物件特點
-
面向物件思想是一種更符合我們思考習慣的思想
-
它可以將復雜的事情簡單化
-
并將我們從執行者變成了指揮者,
-
面向物件的語言中,包含了三大基本特征,即封裝、繼承和多型,
8.2 類和物件
8.2.1 什么是類
-
類:是一組相關屬性和行為的集合,可以看成是一類事物的模板,使用事物的屬性特征和行為特征來描述該
類事物,
現實中,描述 一個事物
-
屬性:就是該事物的狀態資訊,
-
行為:就是該事物能夠做什么
舉例:小貓,
-
屬性:名字、體重、年齡、顏色,
-
行為:走、跑、叫,
8.2.2 什么是物件
物件:是一類事物的具體體現,物件是類的一個實體(物件并不是找個女朋友),必然具備該類事物的屬性和行為, 現實中,一類事物的一個實體:一只小貓, 舉例:一只小貓,
-
屬性:tom、5kg、2 years、yellow,
-
行為:溜墻根走、蹦跶的跑、喵喵叫,
8.2.3 類和物件的關系
-
類是對一類事物的描述,是抽象的,
-
物件是一類事物的實體,是具體的,
-
類是物件的模板,物件是類的物體,

8.2.4 類的定義
現實世界的一類事物:
-
屬性:事物的狀態資訊,
-
行為:事物能夠做什么,
Java中用class描述事物也是如此:
-
成員變數:對應事物的屬性
-
成員方法:對應事物的行為
類的定義格式
1 public class ClassName { 2 //成員變數 3 //成員方法 4 }
-
定義類:就是定義類的成員,包括成員變數和成員方法,
-
成員變數:和以前定義變數幾乎是一樣的,只不過位置發生了改變,在類中,方法外,
-
成員方法:和以前定義方法幾乎是一樣的,只不過把static去掉,static的作用在面向物件后面課程中再詳細
講解,
類定義的格式舉例
1 public class Student { 2 //成員變數 3 String name;//姓名 4 int age;//年齡 5 6 //成員方法 7 //學習的方法 8 publicvoid study() { 9 System.out.println("好好學習,天天向上"); 10 } 11 //吃飯的方法 12 publicvoid eat() { 13 System.out.println("學習餓了要吃飯"); 14 } 15 }
8.2.5 物件的使用
物件的使用格式
創建物件:
類名 物件名 = new 類名();
使用物件訪問類中的成員:
物件名.成員變數;
物件名.成員方法();
物件的使用格式舉例:
1 public class Test01_Student { 2 public static void main(String[] args) { 3 //創建物件格式:類名 物件名 = new 類名(); 4 Student s = new Student(); 5 System.out.println("s:"+s); //cn.itcast.Student@100363 6 //直接輸出成員變數值 7 System.out.println("姓名:"+s.name); //null 8 System.out.println("年齡:"+s.age); //0 9 System.out.println("‐‐‐‐‐‐‐‐‐‐"); 10 //給成員變數賦值 11 s.name = "趙麗穎"; 12 s.age = 18; 13 //再次輸出成員變數的值 14 System.out.println("姓名:"+s.name); //趙麗穎 15 System.out.println("年齡:"+s.age); //18 16 System.out.println("‐‐‐‐‐‐‐‐‐‐"); 17 //呼叫成員方法 18 s.study(); // "好好學習,天天向上" 19 s.eat(); // "學習餓了要吃飯" 20 } 21 }
成員變數的默認值
資料型別 | 默認值 | |
|---|---|---|
| 基本型別 | 整數(byte,short,int,long) | 0 |
| 浮點數(float,double) | 0.0 | |
| 字符(char) | '\u0000' | |
| 布爾(boolean) | false | |
| 參考型別 | 陣列,類,介面 | null |
8.2.6 類與物件的案例
定義手機類:
1 public class Phone { 2 // 成員變數 3 String brand; //品牌 4 int price; //價格 5 String color; //顏色 6 // 成員方法 7 //打電話 8 public void call(String name) { 9 System.out.println("給"+name+"打電話"); 10 } 11 //發短信 12 public void sendMessage() { 13 System.out.println("群發短信"); 14 } 15 }
定義測驗類:
1 public class Test02Phone { 2 public static void main(String[] args) { 3 //創建物件 4 Phone p = new Phone(); 5 //輸出成員變數值 6 System.out.println("品牌:"+p.brand);//null 7 System.out.println("價格:"+p.price);//0 8 System.out.println("顏色:"+p.color);//null 9 System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); 10 //給成員變數賦值 11 p.brand = "錘子"; 12 p.price = 2999; 13 p.color = "棕色"; 14 //再次輸出成員變數值 15 System.out.println("品牌:"+p.brand);//錘子 16 System.out.println("價格:"+p.price);//2999 17 System.out.println("顏色:"+p.color);//棕色 18 System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); 19 //呼叫成員方法 20 p.call("紫霞"); 21 p.sendMessage(); 22 } 23 }
8.2.7 物件記憶體圖
-
一個物件,呼叫一個方法記憶體圖

通過上圖,我們可以理解,在堆疊記憶體中運行的方法,遵循"先進后出,后進先出"的原則,變數p指向堆記憶體中的空間,尋找方法資訊,去執行該方法,但是,這里依然有問題存在,創建多個物件時,如果每個物件內部都保存一份方法資訊,這就非常浪費記憶體了,因為所有物件的方法資訊都是一樣的,那么如何解決這個問題呢?請看如下圖解
-
兩個物件,呼叫同一方法記憶體圖

物件呼叫方法時,根據物件中方法標記(地址值),去類中尋找方法資訊,這樣哪怕是多個物件,方法資訊只保存一份,節約記憶體空間,
-
一個參考,作為引數傳遞到方法中記憶體圖

參考型別作為引數,傳遞的是地址值,
8.3 成員變數和區域變數
8.3.1 成員變數和區域變數的區別
變數根據定義位置的不同,我們給變數起了不同的名字,如下圖所示:

-
在類中的位置不同
-
成員變數:類中,方法外
-
區域變數:方法中或者方法宣告上(形式引數)
-
-
作用范圍不一樣
-
成員變數:類中
-
區域變數:方法中
-
-
初始化值的不同
-
成員變數:有默認值
-
區域變數:沒有默認值,必須先定義,賦值,最后使用
-
-
在記憶體中的位置不同
-
成員變數:堆記憶體
-
區域變數:堆疊記憶體
-
-
生命周期不同
-
成員變數:隨著物件的創建而存在,隨著物件的消失而消失
-
區域變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
-
四、本單元知識總結
1.面向物件的特點
2.類和物件關系
3.物件的記憶體圖解
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/304441.html
標籤:Java
上一篇:Elasticsearch 為什么能做到快速檢索?秘密在這里!
下一篇:Python基礎之破解加密壓縮包
