類是對一組具備相同特徵和行爲的對象的抽象描述。java
爲何會有類的概念?c++
現實生活中爲了更好的區分事物,把事物進行歸類,進而更好的認識事物。 編程
對象是類的具體實現,表示一個獨立的、惟一的個體。oop
類是抽象的,是一個羣體概念。對象是具體的,是一個獨立個體。spa
一個獨立的對象必定屬於某個類。理解爲類包含對象對象
類或者對象具備的特徵在程序中稱爲屬性(property/attribute)blog
具體對象的屬性擁有的數據稱爲屬性值。內存
屬於同一類對象都具備相同的屬性,但各個對象都擁有各自的屬性值。這些屬性值區分了不一樣的對象。ci
類或者對象的行爲稱爲方法(Method)作用域
在java中
類是具備相同屬性和方法的對象的集合。
對象是用來描述客觀事物的一個實體,由一組屬性和方法構成。
類是對象的類型。
開發者能夠根據須要自定義類,語法
[修飾符] class 類名{ 屬性 方法 } |
案例:定義一個類,實例化對象
public class Student{
// 聲明類的屬性 String sid; String name; int age; char gender;
// 聲明方法 public void learn(String cName){ System.out.println(name+" learn "+cName); } } |
public class Test01{ public static void main(String[] args){
// 經過Student類建立對象 /* Student stu; stu = new Student(); */
// stu是Student的一個對象,也是Student的一個實例 // new 操做就是實例化過程 Student stu = new Student(); // 給屬性賦值(.語法) stu.name = "張三"; stu.sid = "001"; // 調用方法 stu.learn("java");
Student stu2 = new Student(); stu2.name = "李四"; stu2.sid = "001"; stu2.learn("c++");
} } |
局部變量:在方法或者語句塊中聲明的變量稱爲局部變量,語句塊就是做用域。
局部變量在其所在的做用域有效,出了做用域就無效。
做用域能夠嵌套,內部做用域能夠訪問外部做用域的變量。
public void learn(String cName){ // 方法中定義的局部變量 System.out.println(name+" learn "+cName);
// 語句塊中定義局部變量 { int count = 10; System.out.println(" count "+count); System.out.println("cname"+cName); }
// System.out.println(" count "+count); } |
成員變量:在方法外部,類的內部定義的變量稱爲類的成員變量,簡稱成員變量。有些地方把屬性稱爲filed(字段)
成員變量必須經過類的實例/對象調用,例如 stu.name ,有時成員變量也稱爲實例變量。
成員變量 == 屬性 == 字段 == 實例變量
類中包含兩個成員:成員變量和成員方法。
[修飾符] 屬性類型 屬性名稱 [=默認值] |
在定義成員變量時能夠對其初始化,若是不對其初始化,Java使用默認的值對其初始化。(數值:0,0.0 char:\u0000, boolean:false, 全部引用類型:null)
屬性/成員變量的做用域範圍是整個類體。
面向對象編程(oop),把一切都看出對象,經過類構造對象,java程序都是經過class類組織的。
所謂面向對象經過類構造對象,使用對象完成需求。
需求:用手機播放一首歌曲
public class Phone{
String brand; String type; float price;
public void showInfo(){ System.out.print("品牌:"+brand); System.out.print(",型號:"+type); System.out.println(",價格:"+price); }
public void play(Music music){ System.out.println("正在用"+brand+type+"播放<<"+music.name+">>歌曲"); music.showInfo(); } } |
public class Music{
String name; String actor; int times; String content;
public void showInfo(){ System.out.println("-- "+name+" --"); System.out.println("演唱者:"+actor);
int h = times / 3600; int m = times % 3600 / 60; int s = times % 60;
System.out.println("時長:"+h+":"+m+":"+s); System.out.println(content); } } |
public class Test01{ public static void main(String[] args){
Music music = new Music(); music.name = "向天再借五百年"; music.actor = "韓磊"; music.times = 356; music.content = "沿着江山起起伏伏溫柔的曲線,\n放馬愛的中原愛的北國和江南";
Phone phone = new Phone(); phone.brand = "Apple"; phone.type = "iPhone XR"; phone.price = 5999.0f;
phone.play(music);
} } |
··
總結
面向對象編程就是完成一個複雜的需求須要各個對象之間相互配合完成。對象的建立須要定義類型,java程序就是經過類來組織程序的。
java中一切都是對象。
根據業務中的對象抽象成計算機可識別的類,簡單的說就是抽出各個對象像的部分。
抽象的步驟
[1] 發現類(歸類)。類通常用名詞。
[2] 發現類的屬性(特徵)。屬性通常用名詞。發現類的屬性時,通常只放和業務相關的屬性。
[3] 發現類的方法(行爲)。方法通常是動詞。只放和業務相關的方法。
+ public / – private