Sunday 9 September 2012

Importance of Virtual Keyword in Apex and when to use Virtual keyword

I have less experience on Java Programming and hence posting this for all those who are familiar with basics of apex but unfamiliar with OOPS concepts like inhertience and polymorphism of Java

Problem description:I knew that the virtual keyword is used to extend a class and thanks to great documentation from salesforce.(http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_example.htm) But my problem is no where in document it is mentioned how to proceed if in my parent class there is a parameterized constructor .

Example:

global virtual class sobjectWrapper{
sobject sobjectDetails;
String RefreshFlag='';
public sobjectWrapper(sobject r){
sobjectDetails=r;
  }
 }

As seen in the above code there is a parametrised constructor.

First i attempted to write the extended the class as shown below

 
global class extutilility extends sobjectWrapper{
sobject sobjectDetails;
String RefreshFlag='';
private string abc;
extutilility(sobject r){
sobjectDetails=r
 }
}

As expected error ...compile time saying " Method does not exist or incorrect signature: [sobjectWrapper].() at line 5 column 1"

Disappointed on my java skills .Had to google little to find what i am i missing.

Here is how it needs to be written

global class extutilility extends sobjectWrapper{
sobject sobjectDetails;
String RefreshFlag='';
private string abc;
extutilility(sobject r){
super(r);
}
}

Use of Super Keyword is what i did not now and here is the exact situation i need badly.

Hope this helps lot of apex developers not familiar with Java completely

2 comments:

Introducing Lightning Base Components

Lightning Base Components are great addition to the platform and in fact revolutionary .One of the concerns around lightning component ...