1.1 你是如何認識新事物的? 一般而言,從過往的見多的事物中,總結->推斷->所屬類別->認知行為。 1.2 類(Class)的概念 類是對一組具有共同特征和行為的對象的抽象描述。 理解 [1]類是專門用於描述現實生活中的事物的。 [2]類描述的事物都具有共同的特征和行為。 [3]類就是我們通常所 ...
1.1 你是如何認識新事物的?
一般而言,從過往的見多的事物中,總結->推斷->所屬類別->認知行為。
1.2 類(Class)的概念
類是對一組具有共同特征和行為的對象的抽象描述。
理解
[1]類是專門用於描述現實生活中的事物的。
[2]類描述的事物都具有共同的特征和行為。
[3]類就是我們通常所說的 “類型” ,描述的是一個群體性概念,對群體性概念是一個抽象描述。
案例: 高富帥、白富美、屌絲、沙雕
為什麼要提出類的概念?
現實生活中,提出類的概念就是為了認知識別事物。
類可以快速生成對象,類是對象的抽象描述。
1.3 對象(Object)的概念
對象是類的一個具體實現,對象表示的是一個獨立的,唯一的個體。
對象的特征:
[1] 獨立的,唯一的 => 對象和對象之間是相互獨立的,沒有任何關係。即使是同一類型的對象。
[2] 對象承載的數據一定是不同的。
[3] 對象描述的是個體,對象是具體的。特指某一個具體的事物。
[4] 對象一定具有類所屬的特性和行為。
1.4 屬性
在程式中,類或者對象的特征稱為屬性。屬性用於的數據叫做屬性值。例如:對象小明擁有姓名屬性,小明就是姓名的屬性值。
1.5 方法
在程式,類或者對象的行為稱為方法。
在程式中,類和對象的表述:
類是一組具有相同屬性和方法的對象的抽象描述。
對象是一個具體的事物,具有一組屬性和方法。
1.6 如何定義一個類?
創建類->創建對象->解決具體業務問題
語法
[修飾符] class 類名{ 屬性 方法 }
定義一個Student類
public class Student{ // 學生的特性(屬性) String id; String name; int age; char gender; public void sayHi(){ System.out.println("我的姓名:"+name+",我的學號:"+id); } }
總結:
[1]類的定義包含兩部分成員,一個是屬性、一個是方法。
屬性因為定義的位置,也稱為成員變數,本質上屬性就是類的一個成員,方法也成員類的成員方法。
[2]屬性的作用域是整個類型,所以方法中可以直接訪問屬性。
[3]在定義成員變數時可以對其初始化。如果不對其初始化,Java使用預設的值對其初始化。(數值:0,0.0 char:\u0000, boolean:false, 所有引用類型:null)
[4]屬性定義格式:
[修飾符] 屬性類型 屬性名 [=預設值]
在面向對象的語言中,整個程式的基本單位是類,通過類來組織程式。
所有的類聲明的變數都是引用數據類型,引用數據類型必須通過new申請空間。
1.7 創建對象的過程
創建一個對象分為兩個步驟:先聲明對象,然後申請記憶體空間。
// 【1】聲明s1的變數,s1是一個Student類型的對象 // s1是Student的其中一個實例 // Student s1 = null; // 【2】給s1申請記憶體空間(實例化的過程) //s1 = new Student();
通過.來訪問對象的成員(屬性和方法),通過實例結合.可以訪問屬性/成員變數,所有屬性/成員變數也稱為實例變數。
public class Test01{ public static void main(String[] args){ Student s1 = new Student(); //s1.name = "二狗"; //s1.id = "001"; //s1.age = 20; s1.sayHi(); //System.out.println(s1); Student s2 = new Student(); //s2.name = "三狗"; //s2.id = "001"; //s2.age = 20; s2.sayHi(); //System.out.println(s2); }
}
對象記憶體圖
1.8 如何利用面向對象思維思考問題?
需求:用手機播放Mp3—最炫名族風?
public class Phone{ String brand; String type; float price; String color; public void start(){ System.out.println(brand+":"+type+" start..."); } public void stop(){ System.out.println(brand+":"+type+" stop..."); } public void play(Music music){ System.out.println(brand+":"+type+" play:"+music.name); System.out.println(music.singer); music.friendlyTime(); System.out.println(music.content); } }
public class Music{ String name; String category; String content; String singer; int time; // 單位是秒 public void friendlyTime(){ int h,m,s; h = time / 3600; m = time % 3600 / 60; s = time % 60; System.out.println("時長:" + ((h>0) ? (h+":"):"") +m+":"+s); } }
public class Test03{ public static void main(String[] args){ Phone phone = new Phone(); phone.brand = "Apple"; phone.type = "iPhone x"; phone.price = 10000.0f; Music music = new Music(); music.name = "最炫名族風"; music.singer = "鳳凰傳奇"; music.time = 151; music.content = "蒼茫的天涯是我的愛\n蒼茫的天涯是我的愛\n蒼茫的天涯是我的愛"; phone.play(music); } }