본문 바로가기
기타

[Salesforce] Classes, Modifier, Interfaces

by 발담그는블로그 2021. 6. 28.

Apex Class

In Apex, you can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. You can only have inner calsses one level deep.

Class 정의하기 위해선,

1. Access modifiers (제어자)

  • Top-level class에서 access modifiers(global, public)를 지정해주어야 한다.
  • inner class에서는 사용하지 않아야 한다.
  • 클래스: public, default, final, abstract
  • 메서드: public, protected, default, private, final, abstract, static
  • 멤버변수: public, protected, default, private, final, static
  • 지역변수: final - 클래스와 메서드에 static과 abstract를 함께 사용할 수 없다. - abstract메서드의 접근 제어자가 private일 수 없다. - 메서드에 private와 final을 같이 사용할 필요는 없다.

2. Optional definition modifiers (virtual, abstract 등등)

3. Required: The keyword class followed by the name of the class

4. Optional extension and/or implementations

 

 

Modifier

Private access modifier

해당 class에서만 code를 사용할 수 있다. 이것은 inner class의 default access modifier이다.

Public access modifier

이 class가 너의 application이나 namespace에서 보인다는 것을 선언한다.

Global access modifier

이 class가 모든 Apex code 어디에서든지 알려진다는 것을 선언한다. Webservice와 정의된 메서드를 포함하는 모든 클래스들은 global로써 선언되어져야 한다. 만약 inner class가 global이면, top-level class도 global이어야 한다.

With sharing or With sharing 

이 class가 sharing 규칙을 강화시켜야하는 명시한다. With Sharing: 현재 user의 sharing 규칙을 명시한다. OWD와 Sharing Rule 반영한다. Apex code는 system context에서 실행되기 때문에 규칙을 적용하려면 꼭 이걸 사용해야한다.

Inherited Sharing

Inferited Sharing을 사용하는 것은 AppExchange Security Review하는 것을 가능하게 해주고, 보안을 하게 해준다. Inherited sharing class + with sharing은 다음과 같을 때 사용 (An Aura component controller, A Visualforce controller, An Apex REST service, Any other entry point to an Apex transaction)

Virtual definition modifier

이 class가 extension과 override를 허용하는 것을 선언한다.

Abstract definition modifier

이 클래스가 abstract 메서드를 포함한다는 것을 선언한다. 오로지 그들의 signature을 가지고 있는 abstract 메서드만 선언되고 body엔 정의되지 않는다.

Implement

여러 인터페이스를 가능하게 한다. 하지만 하나의 기존 클래스밖에 extend하지 못한다. 이 제한은 Apex 코드가 다양한 상속을 지원하지 못한다는 것을 의미한다.

 

Interfaces

-실행되지 않은 method가 없는 class와 같다.

-각각의 method의 body는 비어져있다.

-abstract, final와 함께 대표적인 규제

-어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야함.

-하위 클래스에 특정한 메소드가 반드시 존재하도록 강제함.

-쓰이는 용도: 협업자 상호간에 구체적인 약속을 하기 위해서

    1.  
반응형