- Apex Design Patterns
- Jitendra Zaa Anshul Verma
- 351字
- 2021-07-16 11:11:22
An abstract class
An abstract class is something between inheritance and an interface. In inheritance, a child class extends a parent class, where both the classes have full implementations. In an interface, a parent class does not have any implementation and depends on child classes completely. There are scenarios where a parent class knows the common implementations needed by all child classes but the remaining implementation differs for all.
In the same game that we discussed earlier, there are multiple ways to gain points. If Mario gets any coin, then the overall score will be added (known), but there are different kinds of coins (unknown). Coins may be in blue, yellow, or different colors. Each color will add different scores.
It's time to see an abstract class in action:
public abstract class GameCoin { public abstract Integer coinValue(); public Integer absorbCoin(Integer existingPoint){ return existingPoint + coinValue(); } }
The coinValue
method is declared using the abstract
keyword, which means that all child classes need to implement this. However, it is known that whatever this method returns, it needs to be added to the existing points; and therefore, the absorbCoin
method does not need to be written again and again in all child classes. Don't get confused about how we have used an abstract method in absorbCoin
. Like interfaces, we cannot instantiate an abstract class; therefore, whenever absorbCoin()
is called from a child class, it will be implemented.
Let's play it out:
public class BlueCoin extends GameCoin{ public override Integer coinValue(){ return 50; } } public class YellowCoin extends GameCoin{ public override Integer coinValue(){ return 10; } }
The preceding two child classes extend the GameCoin
abstract class.
The anonymous Apex code for testing is as follows:
Integer totalPoints = 0; GameCoin coins = new BlueCoin(); totalPoints = coins.absorbCoin( totalPoints); coins = new YellowCoin(); totalPoints = coins.absorbCoin(totalPoints); coins = new BlueCoin(); totalPoints = coins.absorbCoin(totalPoints); System.debug('Total points - ' + totalPoints);
The output of this code will be as follows:
Total points - 110
The following class diagram shows two classes that extend an abstract class and implement an abstract method.

- 從零開始:數(shù)字圖像處理的編程基礎(chǔ)與應(yīng)用
- 小程序?qū)崙?zhàn)視頻課:微信小程序開發(fā)全案精講
- Beginning Java Data Structures and Algorithms
- Go語言高效編程:原理、可觀測性與優(yōu)化
- Julia機器學(xué)習(xí)核心編程:人人可用的高性能科學(xué)計算
- Scala編程實戰(zhàn)(原書第2版)
- MATLAB 2020從入門到精通
- Julia高性能科學(xué)計算(第2版)
- PySpark Cookbook
- Create React App 2 Quick Start Guide
- 深度探索Go語言:對象模型與runtime的原理特性及應(yīng)用
- 大學(xué)計算機基礎(chǔ)實訓(xùn)教程
- R的極客理想:量化投資篇
- IBM RUP參考與認證指南
- Python GUI設(shè)計tkinter菜鳥編程(增強版)