裝箱是將值型別轉換為
object
型別或由此值型別實現的任一介面型別的過程。
int i = 123;
// the following line boxes i.
object o = i;
// unboxing
o = 123; i = (int)o;
物件,打個很簡單的比方說:男人,女人都是高階動物,都是乙個物件,他們都有乙個父物件就是高階動物。這裡的裝箱應該理解為 封裝物件 ,即把基礎資料型別(如 int)轉換成基礎型別封裝類的物件(如 new integer())
拆箱就是裝箱的反過程,即把基礎型別封裝類的物件(如 new integer())轉換為基礎資料型別(如 int)。
裝箱: integer a = new integer() ;
a = 100 ; 以前不支援為物件如此賦值
拆箱: int b = new integer(100) ;
道理很簡單,按理說c#被設計成一種完全物件導向的語言。因此,包括數字、字元、日期、布林值等等在內的一切,都是物件。似乎只需要一種方式來對待這些物件就可以了。
但是c#不是只停留在學院中和理想中,它必須為效能而妥協,我們知道,對於cpu來說,處理乙個完整的物件,需要很多的指令,對於記憶體來說,又需要很多的記憶體。如果連整數都是物件,那麼效能自然很低。c#於是使用了一種機制,使得這些基本型別在一般的程式設計中被當作非物件的簡單型別處理,在另一些場合,又允許它們被視作是乙個物件。這種機制就是裝箱和拆箱。
裝箱後的物件看上去和乙個物件一樣,擁有方法,可以當作object處理,拆箱後的變數,看上去又如同c語言中的那些變數、結構體一樣,可以直接參與運算和處理。
1)物件 物件是執行期的基本實體,它是乙個封裝了資料和操作這些資料的**的邏輯實體。
2)類 類是具有相同型別的物件的抽象。乙個物件所包含的所有資料和方法可以通過類來構造。
3)封裝 封裝是將資料和****到一起,避免了外界的干擾和不確定性。物件的某些資料和**可以是私有的,不能被外界訪問,以此實現對資料和**不同級別的訪問許可權。
4)繼承 繼承是讓某個型別的物件獲得另乙個型別的物件的特徵。通過繼承可以實現**的重用:從已存在的類派生出的乙個新類將自動具有原來那個類的特性,同時,它還可以擁有自己的新特性。
5)多型 多型是指不同事物具有不同表現形式的能力。多型機制使具有不同內部結構的物件可以共享相同的外部介面,通過這種方式減少**的複雜度。
6)動態繫結 繫結指的是將乙個過程呼叫與相應**鏈結起來的行為。動態繫結是指與給定的過程呼叫相關聯的**只有在執行期才可知的一種繫結,它是多型實現的具體形式。
7)訊息傳遞 物件之間需要相互溝通,溝通的途徑就是物件之間收發資訊。訊息內容包括接收訊息的物件的標識,需要呼叫的函式的標識,以及必要的資訊。訊息傳遞的概念使得對現實世界的描述更容易。
8)方法 方法(method)是定義乙個類可以做的,但不一定會去做的事。
類是抽象的,而物件是乙個實體
.類:具有相同屬性和行為的一組物件的集合.
物件:是具體存在的事物,明確定義狀態和行為.
類:一系列屬性的集合,如老師
物件:乙個具體的事務或集體中的一員,如xx老師!
xx老師有老師(類)的所有屬性,並自己還有延伸的屬性(裝逼,弱智)!
簡單的理解為:物件是類的乙個例項!類是集體物件共同屬性的集合!
Java 拆箱與裝箱
裝箱 把基本型別用它們相應的引用型別包裝起來,使其具有物件的性質。int包裝成integer float包裝成float 拆箱 和裝箱相反,將引用型別的物件簡化成值型別的資料 integer a 100 這是自動裝箱 編譯器呼叫的是static integer valueof int i int b...
Java 自動裝箱與拆箱
什麼是自動裝箱拆箱 基本資料型別的自動裝箱 autoboxing 拆箱 unboxing 是自j2se 5.0開始提供的功能。一般我們要建立乙個類的物件的時候,我們會這樣 class a newclass parameter 當我們建立乙個integer物件時,卻可以這樣 integer i 100...
Java 自動裝箱與拆箱
什麼是自動裝箱拆箱 基本資料型別的自動裝箱 autoboxing 拆箱 unboxing 是自j2se5.0開始提供的功能。一般我們要建立乙個類的物件的時候,我們會這樣 class a new class parameter 當我們建立乙個integer物件時,卻可以這樣 integer i 100...