InnerClass, Interface, Virtual and Abstract class
- johnsontitus
- May 31, 2020
- 1 min read
public with sharing class OuterClass {
//Static final variable - outer class only
public static final Integer MY_INT;
//Static variable can be initialized where the variable is defined
static{
MY_INT = 4;
}
//non-final variable to communicate state across triggers
//within a single request
public static String sharedState;
// Member variable for outer class
private final String m;
{
m='a';
}
public OuterClass() {
}
//Static method - outer class only
public static Integer getInt(){
return MY_INT;
}
public String getM(){
return m;
}
public String InvokeInnerClassMethod(){
InnerClass ic = new InnerClass();
return ic.myInterfaceMethod();
}
// Inner interface
public virtual interface MyInterface {
// No access modifier is necessary for interface methods - these are always
// public or global depending on the interface visibility
String myInterfaceMethod();
}
public virtual class InnerClass implements MyInterface{
// Because it is declared virtual it can be overridden by a subclass
public virtual String myInterfaceMethod(){
return 'hello';
}
}
//an abstract class should have atleast a method without body
public abstract class MyAbstractClass extends InnerClass{
//use override when the child class overrides the parent class method
public override String myInterfaceMethod(){
return 'World';
}
//method without body should be declared abstract
public abstract void noBodyMethod();
}
public class ChildAbstractClassImplementer extends MyAbstractClass{
public override void noBodyMethod(){
Integer i = 5;
}
}
}

Comments