Jython中的對(duì)象——面向?qū)ο蟮恼Z(yǔ)言概述
Jython中的對(duì)象
Jython是一種 面向?qū)ο?的語(yǔ)言,它完全支持面向?qū)ο缶幊?。Jython定義的對(duì)象有以下特性:
1, 身份:每個(gè)對(duì)象都必須是獨(dú)特的,并且可以對(duì)其進(jìn)行測(cè)試。Jython支持 is 和 is not 測(cè)試以實(shí)現(xiàn)這一目的。
2,狀態(tài):每個(gè)對(duì)象都必須可以存儲(chǔ)狀態(tài)。Jython提供了 屬性 (也稱為 字段 或者 實(shí)例變量)以達(dá)到這一目的。
3,行為:每個(gè)對(duì)象都必須可以操縱其狀態(tài)。為此,Jython提供了 方法。
注意內(nèi)置函數(shù) id(object) 返回一個(gè)惟一整數(shù)身份值。這樣,表達(dá)式 x is y 就等同于 id(x) == id(y) 。
Jython中的對(duì)象——OOP 支持
Jython包含了以下功能以支持面向?qū)ο缶幊蹋?/P>
基于類(lèi)創(chuàng)建對(duì)象:Jython類(lèi) 是用于創(chuàng)建對(duì)象的模板。 對(duì)象 是具有關(guān)聯(lián)行為的數(shù)據(jù)結(jié)構(gòu)。
多態(tài)繼承:Jython支持 單繼承 和 多繼承。所有 Jython實(shí)例方法都是 多態(tài)的 (或者 虛擬的(virtual))并且可以被子類(lèi)覆蓋。
封裝隱藏?cái)?shù)據(jù):Jython允許(但是不要求)隱藏屬性,因而在類(lèi)以外只能通過(guò)類(lèi)的方法訪問(wèn)。類(lèi)實(shí)現(xiàn)了修改數(shù)據(jù)的函數(shù)(稱為方法)。
Jython中的對(duì)象——定義類(lèi)
定義類(lèi)就像定義一個(gè)模塊,在其中可以定義變量和函數(shù)。與 Java 語(yǔ)言不同,Jython允許在每個(gè)源文件(或者模塊)中定義任意數(shù)量的 public 類(lèi)。因此在 Jython中,模塊很像 Java 語(yǔ)言中的包。
在 Jython中,我們使用 class 語(yǔ)句定義類(lèi)。class 語(yǔ)句格式如下:
- class name ( superclasses ): statement
或者
- class name ( superclasses ):
- assignment
- :
- function
- :
在定義類(lèi)時(shí),可以選擇提供零個(gè)或者多個(gè) 賦值 語(yǔ)句。它們創(chuàng)建這個(gè)類(lèi)的所有實(shí)例所共享的類(lèi)屬性。還可以提供零個(gè)或者多個(gè) 函數(shù) 定義。它們創(chuàng)建方法。父類(lèi)列表是可選的。我們將在本教程稍后討論父類(lèi)。
類(lèi)名在同一范圍(模塊、函數(shù)或者類(lèi))中應(yīng)當(dāng)是惟一的。類(lèi)名實(shí)際上是一個(gè)綁定到類(lèi)正文的變量(類(lèi)似于所有其他賦值)。事實(shí)上,可以定義多個(gè)變量引用同一個(gè)類(lèi)。
Jython中的對(duì)象——?jiǎng)?chuàng)建類(lèi)實(shí)例
類(lèi)用于包含類(lèi)(或者共享的)屬性或者創(chuàng)建類(lèi)實(shí)例。要?jiǎng)?chuàng)建類(lèi)的實(shí)例,只要把這個(gè)類(lèi)當(dāng)成函數(shù)調(diào)用。不需要像在 C++ 或者 Java 語(yǔ)言中那樣使用 new 操作符。例如,對(duì)于類(lèi)
- class MyClass:
- pass
下面的語(yǔ)句創(chuàng)建一個(gè)實(shí)例:
- x = MyClass()
【編輯推薦】