Abstraction In Apex
Hiding the complexity and given the functionality known as Abstraction.
Real time example of Abstraction: human beings are speaking because GOD given the functionality to them for speaking but how they are speaking and what all their internal body organs they are using for speaking is completely hidden from them so finally we can say they have a functionality of speaking but complexity is completely hidden from them.
Note: Always make sure, abstraction is always for end users not for developers.
In Apex, abstraction can be achieved via 2 ways:
- Abstract Class
- Interface
Abstract Class: There are some points which you always remember while working on abstract class as below:
- If you are making a class as abstract then there is no rule that you guys need to have abstract method inside the abstract class but vice-versa is not true i.e. if you guys having an abstract method inside a class in this case you guys need to declare that class as abstract.
- An abstract class can have abstract methods (a method without body is known as abstract method) as well as concrete methods (a method with body is known as concrete method) too.
- We can have a constructor in abstract class but we cannot instantiate the abstract class which means we cannot create object of abstract class.
- An abstract class always works with the conjunction of child class which means it is a responsibility of child class to override the abstract method of abstract parent class.
Note: If you want that immediate child class will not override the abstract method of parent class in this case you need declare a child class a abstract class.
Syntax of an Abstract Class
public abstract class ApexAbstruct { public ApexAbstruct() { } // default constructor public abstract void show(); // abstract method, having no body public void dispaly(){ // concrete method, having body. System.debug(‘This is normal method ‘); } }
Implemented/Child Class
public class ApexClass extends ApexAbstruct{ //Override the abstract method of parent class public override void show(){ System.debug(‘This is an Astruction example’); } }
Cretae an object and call the methos=d.
ApexClass ap = new ApexClass(); ap.show();
Interfaces: There are some points which you always remember while working on interface as below:
- All the methods of interfaces are by default abstract Which means you do not need to explicitly write abstract keyword in front of method.
- No need to define access specifier in front of method because all the methods of interfaces are by default is global.
- An interface always extends another interface.
- A class always implements an interface.
- It is a responsibility of child class to override all the methods of implemented interface as all the methods of interface are by default is abstract.
Note: Interfaces are used to achieve 100% abstraction.
Syntax of an Interface
public interface ApexInterface{ void show(); }
Implemented class
public class Apex implements ApexInterface{ public void show(){ System.debug(‘This is Apex interface example’); } }
Create an object and call the method
Apex ap = new Apex(); ap.show();
Output: