【轉載】ABAP面向物件(Object Orientation)程式設計2-類的靜態屬性
對於ABAP OO中的靜態屬性,使用 class-data語句定義(ClASS-DATA attr(屬性)[可選]),語句CLASS-DATA只允許被宣告在介面或者類中,這個語句定義一個靜態屬性attr的有效性是和類的例項無關的,只對類的本身有效。所有的類的例項和子類都可以訪問這個靜態屬性。
注意
1. 像所有的在繼承中的靜態元件,靜態屬性存在於所有繼承父類的子類中。靜態的屬性,該屬性是可見的外部使用類元件選擇器可以解決隨著它存在的類中的所有的名字。這意味著類在宣告的時候已經被定義,舉例來說,如何執行建構函式有影響。如果靜態屬性改變,那麼所有的類都會影響,會獨立的尋找地址。
2. 你可以訪問CLASS-DATA定義的靜態屬性只用類的名字,而不是介面的名字。
3. 作為一個普通的類,這是他們內部的程式模式是建立在載入類時,共享記憶體功能的類的靜態屬性以同樣的方式處理,如果不同的程式訪問類中靜態屬性,那麼這些動態屬性是相互獨立的。
4. 動態屬性介面可以宣告成一個static box,用語句 BOXED.
下面程式碼是在類vehicle中定義了一個靜態屬性claaa_name和一個例項屬性speed。
CLASS vehicle DEFINITION.
PUBLIC SECTION.
CLASS-DATA class_name(10) TYPE C VALUE 'vehicle'.
PROTECTED SETION.
DATA speed TYPE I.
ENDCLASS.
完整程式碼:
ABAP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
REPORT ztest_oo_static. *&---------------------------------------------------------------------* *& Class cl_vehicle *&---------------------------------------------------------------------* * Text *----------------------------------------------------------------------* CLASS cl_vehicle DEFINITION. PUBLIC SECTION. CLASS-DATA class_name(10) VALUE 'Vehicle'. METHODS:accelerate,show_speed. PROTECTED SECTION. DATA speed TYPE i. CONSTANTS: pi TYPE p DECIMALS 2 VALUE '3.14'. ENDCLASS. "cl_vehicle *&---------------------------------------------------------------------* *& Class (Implementation) cl_vehicle *&---------------------------------------------------------------------* * Text *----------------------------------------------------------------------* CLASS cl_vehicle IMPLEMENTATION. METHOD accelerate. speed = speed + 1. ENDMETHOD. "accelerate METHOD show_speed. WRITE: / 'Speed:' ,speed. ENDMETHOD. "show_speed ENDCLASS. "cl_vehicle DATA ob_app1 TYPE REF TO cl_vehicle. DATA ob_app2 TYPE REF TO cl_vehicle. DATA ob_app3 TYPE REF TO cl_vehicle. DATA o_vehicle TYPE REF TO cl_vehicle. "引用全域性類 START-OF-SELECTION. CREATE OBJECT ob_app1. CREATE OBJECT ob_app2. WRITE: 'ob_app1',ob_app1->class_name. WRITE: / 'ob_app2',ob_app2->class_name. WRITE: / 'vehicle',cl_vehicle=>class_name. "類靜態屬性 SKIP. * 更改類靜態屬性 ob_app1->class_name = 'Ship'. WRITE: / 'ob_app1',ob_app1->class_name. WRITE: / 'ob_app2',ob_app2->class_name. WRITE: / 'vehicle',cl_vehicle=>class_name. SKIP. cl_vehicle=>class_name = 'Bus'. CREATE OBJECT ob_app3. WRITE: / 'ob_app3',ob_app3->class_name. CALL METHOD ob_app3->accelerate. CALL METHOD ob_app3->show_speed. CREATE OBJECT o_vehicle. DO 5 TIMES. CALL METHOD o_vehicle->accelerate. ENDDO. CALL METHOD o_vehicle->show_speed. DATA o_vehicle2 LIKE o_vehicle. * 類賦值,物件只要有被引用的變數,就是活動的 o_vehicle2 = o_vehicle. CLEAR o_vehicle. WRITE: '類賦值,物件只要有被引用的變數,就是活動的'. CALL METHOD o_vehicle2->show_speed. |
執行結果:
相關推薦
【轉載】ABAP面向物件(Object Orientation)程式設計2-類的靜態屬性
對於ABAP OO中的靜態屬性,使用 class-data語句定義(ClASS-DATA attr(屬性)[可選]),語句CLASS-DATA只允許被宣告在介面或者類中,這個語句定義一個靜態屬性attr的有效性是和類的例項無關的,只對類的本身有效。所有的類的例項和子類都可以
【轉載】ABAP面向物件(Object Orientation)程式設計4-類的構造方法(constructor method)
建構函式就是CREATE OBJECT的時候會自動呼叫的方法(method).分為靜態和非靜態兩種。 1,靜態構造方法 語法: 1 CLASS-METHODS class_constructor. 靜態的建構函式是每個類都已
面向物件【day07】:面向物件使用場景(十一)
本節內容 1、概述 2、知識回顧 3、使用場景 一、概述 之前我們學了面向物件知識,那我們在什麼時候用呢?不可能什麼時候都需要用面向物件吧,除非你是純的面嚮物件語言,好的,我們下面就來談談 二、知識回顧 2.1 什麼是面向物件? 在學面向物件之前我們都是用:函式 面向物件程式設計
【09】Python 面向物件
1.基本概念 1.1類、物件、屬性、方法、構造/解構函式 類:一個模板,模型 例項、物件:就是根據這個模板造出來的東西 例項化:就是模型做成例項的過程。 屬性:類裡面的變數 方法:類裡面的函式 建構函式:在類初始化的時候做的一些操作,例項化的時候它會自動執行。 解構函式:在例
【轉載】ABAP 非系統關鍵字 快速程式碼提示功能
相信如果在寫ABAP程式之前如果寫過其他語言(C,JAVA等)的童鞋會發現,其實SAP的ABAP 編輯器做的實在是不咋地或者可以說很爛(但除錯功能的確很強大),也不能帶出你定義的類中的成員和方法。 前段時間無意中發現有一個地方能設定,能帶出自己定義的一些變數,雖然匹配率不是很高,但是聊勝於無嘛。
【轉載】 ABAP SELECT-INTO用法 SELECT @ (AT) 新語法 SELECT * INTO DATA(@IT_ITAB)
READ TABLE LT_ITAB INTO DATA(LS_ITAB) INDEX 1. 看起來實際上是在執行時宣告變數。 寫程式時一直沒有使用ABAP的新語法,今天記錄一下新語法的使用,總結不全,想到什麼就寫什麼,不喜勿噴! 找了個select,點了一下F1進去看看 先找個簡單
【轉載】ABAP 利用 觀察點 除錯 來跟蹤資料來源
貌似很多地方都用不了這個方法。 ABAP 利用 觀察點 來跟蹤資料來源。 下面是一個跟蹤例項,查詢稅率 的取邏輯,是從哪個表取出的。 1. Tcode :FTXP 進入稅率維護介面,
【轉載】 ABAP SELECT-INTO用法 SELECT @ (AT) SELECT * INTO DATA(@IT_ITAB 新語法
寫程式時一直沒有使用ABAP的新語法,今天記錄一下新語法的使用,總結不全,想到什麼就寫什麼,不喜勿噴! 找了個select,點了一下F1進去看看 先找個簡單點的語法,因為程式要使用插入內表的操作,以前的步驟都是新建工作區,新建內表,再select,所以這裡直接進去INTO
【C++】:面向物件三大特性之繼承
面向物件三大特性之繼承 1.繼承的概念及定義 2.基類和派生類物件賦值相互轉化 3.繼承時的作用域 4.派生類中的預設成員函式 5.繼承的友元和靜態成員 6.菱形繼承和菱形虛擬繼承 7.組合和繼承 1.繼承的概念
【轉】使用面向物件程式設計封裝Thread虛擬函式和函式物件
C++11提供了thread,但是過於複雜,我們還是傾向於在專案中編寫自己的Thread。 Posix Thread的使用這裡不再贅述。 重點是這個函式: #include <pthread.h> int pthread_create(pthread_t *thread, c
【C++】:面向物件三大特性之多型
面向物件三大特性之多型 1. 什麼是多型? 2.多型的兩個構成條件 2.1 虛擬函式 2.2 虛擬函式的重寫和協變 2.3 一些不規範的重寫行為 2.4 解構函式的重寫問題 2.5 為什麼
【 專欄 】- UML-面向物件軟體的標準化建模語言
UML-面向物件軟體的標準化建模語言 統一建模語言(UML,UnifiedModelingLanguage)是面向物件軟體的標準化建模語言。因其簡單、統一的特點,而且能表達軟體設計中的動態和靜態資訊,目前已成為視覺化建模語言的工業
【轉載】編譯型語言、解釋型語言、靜態類型語言、動態類型語言概念與區別
自己 運行 是把 修改 lin 鏈接 時代 dll 系統 編譯型語言和解釋型語言 1、編譯型語言 需通過編譯器(compiler)將源代碼編譯成機器碼,之後才能執行的語言。一般需經過編譯(compile)、鏈接(linker)這兩個步驟。編譯是把源代碼編譯成機器碼,鏈接是把
Linux下的TCP/IP程式設計----多播和廣播的實現 【轉載】Linux下的TCP/IP程式設計----多播和廣播的實現
【轉載】 出處:https://blog.csdn.net/wqc_CSDN/article/details/51588769 【轉載】Linux下的TCP/IP程式設計----多播和廣播的實現
【轉載】SAP ABAP LOCK 鎖物件 資料庫鎖
1.概要 鎖物件是在SE11中可以建立/變更/查詢的ABAP物件,起著同期化資料的作用。如下圖1-1所示,當“程式1” 修改資料時使“程式2”不能訪問資料。因為這時的“程式1”給相應資料加了鎖。 &nb
【轉載】面向對象編程
經驗 同時 引用 getname 內存 idt wid 又一 構造 原文鏈接:https://blog.csdn.net/sunshine940326/article/details/72872386 什麽是面向對象編程 面向對象的思想主要是以對象為主,將一個問題抽象出具體
面向物件【林老師版】:面向物件練習(六)
一、編寫一個學生類,產生一堆學生物件 1、程式碼 class Student: school='luffycity' def __init__(self,name,age,sex): self.name=name self.age=age
【轉載】JVM系列二:GC策略&記憶體申請、物件衰老
JVM裡的GC(Garbage Collection)的演算法有很多種,如標記清除收集器,壓縮收集器,分代收集器等等,詳見HotSpot VM GC 的種類 現在比較常用的是分代收集(generational colle
Python開發【第七篇】:面向物件初級篇
面向物件初級篇 概述 面向過程:根據業務邏輯從上到下寫壘程式碼 函式式:將某功能程式碼封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 面向物件:對函式進行分類和封裝,讓開發“更快更好更強...” 面向過程程式設計最易被初學者接受,其往往用一長段程式碼來實現指定功能,開發過程中最常見的
Python之路【第五篇】:面向物件及相關 面向物件基礎
其他相關 一、isinstance(obj, cls) 檢查是否obj是否是類 cls 的物件 1 2