什麼是類、物件、屬性、方法、成員?
日常生活中的所有東西都是物件,而具有同種屬性的一類事物被稱為類,人、動物、植物、車都是類(是抽象的),而姚明這個人就是一個具體的物件。
物件是類的例項化,比如唐伯虎點秋香裡面的小強是蟑螂的例項化。
我們一般不會用類的名稱類稱呼一個物件。
周星馳說“小強,你死得好慘啊!”,而不是說“蟑螂,你死得好慘啊!”。
這裡“蟑螂”是類名,而小強是物件的名稱。
屬性用來描述具體某個物件的特徵。比如姚明身高2.26M,體重100KG,這裡身高、體重都是屬性。
面向物件的思想就是把一切都看成物件,而物件一般都由屬性+方法組成,比如說張三,嘴巴可以看成他的一個屬性,而說話成可以看成他的一個方法,其實方法就是一些function函式。
屬性屬於物件靜態的一面,用來形容物件的一些特性,方法屬於物件動態的一面,你可以些方法來操作一個物件,我們把屬性合方法稱為這個物件的成員。
總結下:
類:具有同種屬性的物件稱為類,是個抽象的概念。比如說:汽車、人、狗、神;
物件:日常生活中的所有東西都是物件,是類的例項化。比如說:小強是蟑螂的例項化,
屬性:用來描述具體某個物件的特徵的是屬性,是靜態的。比如:姚明身高2.26米;
方法:每個物件有它們自己的行為或者是使用它們的方法,比如說一隻狗會跑會叫等,我們把這些行為稱之為方法,是動態的,可以使用這些方法來操作一個物件;
類的成員:屬性和方法稱為這個物件的成員,因為它們是構成一個物件的主要部分,沒有了這兩樣東西,那麼物件也沒什麼存在意義了。
下面介紹下在javascript中如何宣告一個類
在java,c#等語言中,是以class關鍵字來宣告一個類的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//比如在C#中宣告一個Person類
//這是一個典型的類,它包含一個欄位、一個方法和一個稱為建構函式的特殊方法
public class Person{
//
Field
public string name;
//
Constructor
public Person(name){
name
= name;
}
//
Method
public void Sayhello( string friend){
System.Console.WriteLine( "hello!" +
friend + ",my
name is" +name);
}
}
|
但是在javascript中使用了與宣告函式一樣的方式來宣告類,這讓許多初學Js的同學很迷惑,不過熟悉了自然就理解了。
下面我們用javascript來實現上面的Person類.
PS:雖然javascript不是“面向物件”的語言,最多隻能說是“基於物件”,但是如果是初學者,最好不要太過於糾結這個,我們索性就把他當作面向物件的語言,只是形式上有些差別。
?1 2 3 4 5 6 7 8 9 10 11 |
//這裡用js定義了一個與上面c#定義的一樣功能的類
//function就是Person類的建構函式
//建構函式是一種特殊的成員函式,它主要用於為物件分配儲存空間,對資料成員進行初始化.
function Person(name){
//
Field
this .name
= name;
//
Method
this .Sayhello
= function (friend){
document.write( "hello!" +
friend + ",my
name is" +name);
}
}
|
上面說過具有同種屬性的事物被稱為類,是個抽象的東西
我們使用類作為母板來建立一個物件,這個過程倍稱為“例項化”,下面我們例項化一個Person類
1 2 |
var lilei
= new Person( "lilei" );
lilei.Sayhello( "hanmeimei" ); //輸出:hello!hanmeimei,my
name is lilei
|
TODO:欄位,屬性,靜態屬性,原型等概念