国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

SAP ABAP 類

2018-01-03 09:08 更新

類用于指定對象的形式,它將數據表示和將該數據操作為一個整齊包的方法組合。 類中的數據和函數稱為的成員。

類定義和實現

定義類時,可以為數據類型定義藍圖。 這實際上不定義任何數據,但它定義了類名稱的意義,類的對象將包括什么,以及可以對這樣的對象執(zhí)行什么操作。 也就是說,它定義對象的抽象特性,例如屬性,字段和屬性。

以下語法顯示如何定義類:

CLASS <class_name> DEFINITION. 
.......... 
.......... 
ENDCLASS.

類定義從關鍵字CLASS開始,后面跟著類名DEFINITION和類主體。 類的定義可以包含類的各種組件,如屬性,方法和事件。 當我們在類聲明中聲明一個方法時,方法實現必須包含在類實現中。 以下語法顯示如何實現類:

CLASS <class_name> IMPLEMENTATION. 
........... 
.......... 
ENDCLASS.

注意 - 類的實現包含其所有方法的實現。 在ABAP對象中,類的結構包含諸如屬性,方法,事件,類型和常量等組件。

屬性

屬性是可以具有任何數據類型(如C,I,F和N)的類的數據字段。它們在類聲明中聲明。 這些屬性可以分為兩類:實例和靜態(tài)屬性。 實例屬性定義對象的實例特定狀態(tài)。 不同對象的狀態(tài)不同。 使用DATA語句聲明實例屬性。

靜態(tài)屬性定義由類的所有實例共享的類的公共狀態(tài)。 也就是說,如果您更改類的一個對象中的靜態(tài)屬性,該更改對該類的所有其他對象也是可見的。 使用CLASS-DATA語句聲明靜態(tài)屬性。

方法

方法是表示類中的對象的行為的函數或過程。 類的方法可以訪問類的任何屬性。 方法的定義也可以包含參數,以便在調用方法時可以向這些參數提供值。 方法的定義在類聲明中聲明,并在類的實現部分實現。 METHOD和ENDMETHOD語句用于定義方法的實現部分。 以下語法顯示如何實現一種方法:

METHOD <m_name>. 
.......... 
.......... 
ENDMETHOD.

在此語法中,< m_name> 表示方法的名稱。 注意 - 您可以使用CALL METHOD語句調用方法。

訪問屬性和方法

類組件可以在控制如何訪問這些組件的公共,私有或受保護的可見性部分中定義。 私有可見性部分用于拒絕從類外部訪問組件。 這樣的組件只能從類內部訪問,例如方法。

在公共可見性部分中定義的組件可以從任何上下文訪問。 默認情況下,類的所有成員都是私有的。 實際上,我們在私有節(jié)中定義數據,在公共節(jié)中定義相關方法,以便可以從類外面調用它們,如下面的程序所示。

  • 在類中的Public部分中聲明的屬性和方法可以由該類和程序的任何其他類,子類訪問。

  • 當屬性和方法在類的Protected部分中聲明時,那些類和子類(派生類)只能訪問它們。

  • 當在類的Private部分中聲明屬性和方法時,這些屬性和方法只能由該類訪問,而不能由任何其他類訪問。

例子

Report ZAccess1. 
CLASS class1 Definition.
   PUBLIC Section.
      Data: text1 Type char25 Value 'Public Data'.
      Methods meth1.
		
   PROTECTED Section.
      Data: text2 Type char25 Value 'Protected Data'.
		
   PRIVATE Section.     
      Data: text3 Type char25 Value 'Private Data'. 
ENDCLASS.
 
CLASS class1 Implementation.   
   Method meth1.     
      Write: / 'Public Method:',   
             / text1,
             / text2,
             / text3.
      Skip.
   EndMethod.
ENDCLASS. 

Start-Of-Selection.   
   Data: Objectx Type Ref To class1.
   Create Object: Objectx.
   CALL Method: Objectx→meth1.
   Write: / Objectx→text1.

上面的代碼產生以下輸出:

Public Method: 
Public Data 
Protected Data 
Private Data
  
Public Data

靜態(tài)屬性

靜態(tài)屬性用語句CLASS-DATA聲明。 所有對象或實例都可以使用類的靜態(tài)屬性。 靜態(tài)屬性直接在類名的幫助下訪問,像class_name?name_1='Some Text'。

下面是一個程序,我們要打印一個文本行4到8次。 我們定義一個類class1,在公共部分我們聲明CLASS-DATA(靜態(tài)屬性)和一個方法。 在實現類和方法之后,我們直接訪問Start-Of-Selection事件中的static屬性。 然后我們只創(chuàng)建類的實例并調用該方法。

Report ZStatic1. 
CLASS class1 Definition.   
   PUBLIC Section.
      CLASS-DATA: name1 Type char45,
                  data1 Type I.
   Methods: meth1. 
ENDCLASS. 

CLASS class1 Implementation.   
   Method meth1.
      Do 4 Times.
         data1 = 1 + data1.
         Write: / data1, name1.
      EndDo.
      Skip.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection. 
   class1?name1 = 'ABAP Object Oriented Programming'.
   class1?data1 = 0.
   Data: Object1 Type Ref To class1,
         Object2 Type Ref To class1.
			
   Create Object: Object1, Object2.
   CALL Method: Object1→meth1, 
                Object2→meth1.

上面的代碼產生以下輸出:

Static Attributes

構造函數

構造函數是在創(chuàng)建對象或訪問類的組件時自動調用的特殊方法。 每當一個對象被創(chuàng)建時,構造器被觸發(fā),但是我們需要調用一個方法來觸發(fā)一般方法。 在下面的例子中,我們聲明了兩個公共方法method1和constructor。 這兩種方法都有不同的操作。 在創(chuàng)建類的對象時,構造函數方法觸發(fā)其操作。

例子

Report ZConstructor1. 
CLASS class1 Definition.
   PUBLIC Section.
      Methods: method1, constructor.
ENDCLASS. 

CLASS class1 Implementation.
   Method method1.
      Write: / 'This is Method1'.
   EndMethod.
	
   Method constructor.
      Write: / 'Constructor Triggered'.
   EndMethod. 
ENDCLASS. 

Start-Of-Selection.
   Data Object1 Type Ref To class1.
   Create Object Object1.

上面的代碼產生以下輸出:

Constructor Triggered

ME操作員

當你在類的public節(jié)中聲明任何類型的變量時,你可以在任何其他實現中使用它。 變量可以在public section中用初始值聲明。 我們可以在一個具有不同值的方法中再次聲明該變量。 當我們在方法中寫入變量時,系統(tǒng)將打印更改的值。 要反映變量的先前值,我們必須使用“ME"運算符。

在這個程序中,我們聲明了一個公共變量text1,并用一個值初始化。 我們已經再次聲明相同的變量,但是用不同的值實例化。 在該方法中,我們使用“ME"運算符寫該變量以獲取先前啟動的值。 我們通過直接聲明獲得更改的值。

例子

Report ZMEOperator1. 
CLASS class1 Definition.
   PUBLIC Section. 
	
Data text1 Type char25 Value 'This is CLASS Attribute'.
   Methods method1. 
ENDCLASS. 

CLASS class1 Implementation.
   Method method1. 
	
Data text1 Type char25 Value 'This is METHOD Attribute'.
   Write: / ME→text1,
          / text1.
   ENDMethod.
ENDCLASS. 

Start-Of-Selection.
   Data objectx Type Ref To class1.
   Create Object objectx.
   CALL Method objectx→method1.

上面的代碼產生以下輸出:

This is CLASS Attribute 
This is METHOD Attribute
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號