日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Apex基础之Classes

發(fā)布時間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Apex基础之Classes 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Apex的Class與Java中的用法類似,Class是objects的模板,objects都是Class的實例,Apex中可以定義外部類和內(nèi)部類,內(nèi)部類不能嵌套,只能定義一層,如:

public class myOuterClass {
    // Additional myOuterClass code here
    class myInnerClass {
    // myInnerClass code here
    }
}

上面的類定義中,需要注意:

1)外部類必須要指定其訪問修飾符(access modifiers)

2)不用指定內(nèi)部類的訪問修飾符,默認訪問權(quán)限是private

3)內(nèi)部類中不能有static修飾的變量和方法

Apex類定義的模板如下:

private | public | global
[virtual | abstract | with sharing | without sharing]
class ClassName [implements InterfaceNameList] [extends ClassName]
{
    // The body of the class
}

Apex類的訪問修飾符

1)private  指定了private訪問權(quán)限的類只能在本地使用,只能在聲明其定義的代碼塊中使用,內(nèi)部類的默認訪問權(quán)限是private,private只能與內(nèi)部類的定義一起使用

2)public   public的類在本application和namespace上可見

3)global   global的類在任何地方都能被使用,被webService修飾符修飾的方法必須被global修飾,如果一個方法或者內(nèi)部類被global修飾,那么包含其定義的Class必須也要被global修飾

4)with sharing 和without sharing修飾符是可選的,指定類的共享模式

5)virtual   當一個類被virtual修飾,表明其可以被繼承和重寫,如果一個類沒有被virtual修飾,那么其方法就不能被override關(guān)鍵字重寫

6)abstract  抽象類關(guān)鍵字,部分方法只提供方法聲明,不提供定義,需要繼承該類重寫抽象方法

類變量

[public | private | protected | global] [final] [static] data_type variable_name [= value]

類方法

[public | private | protected | global] [override] [static] data_type method_name
(input parameters)
{
    // The body of the method
}

方法參數(shù)的傳遞

對于原始數(shù)據(jù)類型,作為參數(shù)傳遞給方法時采用值傳遞的方式,即將實參的值復制并賦值給形參,當時實參形參并不指向相同的內(nèi)存地址,所以對形參值改變,方法返回時并不能改變實參值;對于非原始數(shù)據(jù)類型的數(shù)據(jù),如collections,采用引用傳遞,即實參形參引用相同的地址,對形參內(nèi)存地址中值的改變也會改變實參內(nèi)存地址中的值,但是如果形參指向了新的內(nèi)存地址,那么實參對新地址存值的改變不會對實參值產(chǎn)生影響

構(gòu)造方法

Apex類構(gòu)造方法需要注意的是,下面兩個構(gòu)造方法屬于不同的方法

public class Leads{
    // A constructor with two arguments
    public Leads (String email, Boolean call) {}
    // Though this constructor has the same arguments as the
    // one above, they are in a different order, so this is legal
    public Leads (Boolean call, String email) {}
}     

類變量和類方法的訪問權(quán)限

1)private    默認訪問權(quán)限,只能在本類內(nèi)部使用

2)protected   在本類的所有內(nèi)部類中可見,在繼承了本類的所有子類中可見,protected修飾符只能用來修飾類變量和類方法

3)public     在本application和namespace中可見,Apex中的public與Java中的不一樣,Apex中的public只在當前application中可見,global應該與Java中的public范圍相似

4)global     可以被外部應用使用,如果一個方法被global修飾,那么其類也要被global修飾

Initialization Code

Initialization Code是一個代碼塊,形如:

[static] {
    //code body
}

Initialization Code先于構(gòu)造函數(shù)被執(zhí)行,靜態(tài)代碼塊用來初始化一些靜態(tài)成員變量,只在類加載是調(diào)用一次

Apex屬性

Apex屬性與C#中的屬性用法一樣,類似于Apex變量,但是屬性可以在數(shù)據(jù)被賦值和被返回時進行額外的操作,如驗證數(shù)據(jù),更改其他變量的值,調(diào)用方法

Apex屬性定義中包含get、set訪問器的代碼塊,只實現(xiàn)了get訪問器的屬性是只讀的,只實現(xiàn)了set訪問器的屬性是只寫的,兩個訪問器都實現(xiàn)則屬性可讀可寫,屬性的定義形式如下:

public class BasicClass {
    // Property declaration
    access_modifier return_type property_name {
        get {
            //Get accessor code block
        }
        set {
        //Set accessor code block
        }
    }
}        

其中access_modifier是屬性的訪問權(quán)限,可以是private,protected,public,global,屬性也可以被static,transient修飾,以實際例子說明:

public class BasicProperty {
  public integer prop {
    get { return prop; }
    set { prop = value; }
  }
}

以下代碼調(diào)用了上述類中的get、set訪問器:

BasicProperty bp = new BasicProperty();
bp.prop = 5; // Calls set accessor
System.assert(bp.prop == 5); // Calls get accessor

注意:

1)get訪問器有返回值,并以return語句結(jié)束;2)不建議在get訪問器中改變類狀態(tài);3)當給一個屬性賦值時,調(diào)用set訪問器,并將賦值的值傳遞給set訪問器中一個與該屬性相同屬性的名為value的隱式變量;4)屬性不能再接口中定義;5)Apex屬性的依據(jù)來自C#,更多詳情詳見C#屬性的介紹;

使用自動屬性(Automatic Properties)

Apex屬性的構(gòu)造器并不一定需要實現(xiàn)代碼,可以只通過制定get、set關(guān)鍵字定義自動屬性,舉例說明:

public class AutomaticProperty {
  public integer MyReadOnlyProp { get; }
  public double MyReadWriteProp { get; set; }
  public string MyWriteOnlyProp { set; }
}

使用靜態(tài)屬性(Static Properties)

當一個屬性的被static修飾,那么其訪問器就只能對類中的靜態(tài)成員進行操作

Apex屬性訪問器的訪問權(quán)限

訪問器的訪問權(quán)限不能高于Apex屬性本身的訪問權(quán)限

繼承

繼承父類的子類繼承了父類的所有方法和屬性。此外,子類可以通過在方法定義中使用override關(guān)鍵字來覆蓋父類中的虛擬方法(用virtual修飾),與Java一樣,一個類只能=繼承一個父類,但是可以實現(xiàn)多個接口;例如:

public virtual class Marker {
  public virtual void write() {
    System.debug('Writing some text.');
  }
  public virtual Double discount() {
    return .05;
  }
}

再創(chuàng)建一個實現(xiàn)上述類的子類:

// Extension for the Marker class
public class YellowMarker extends Marker {
  public override void write() {
    System.debug('Writing some text using the yellow marker.');
  }
}

總結(jié)

以上是生活随笔為你收集整理的Apex基础之Classes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。