đ āĻāĻžāĻāĻžāϤ⧠āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ (Polymorphism in Java): āϏāĻŽā§āĻĒā§āϰā§āĻŖ āύā§āĻÂļ
āĻāĻŋāĻĄāĻŋāĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ: Engineering Digest - Polymorphism: Compile Time vs Run Time
ā§§. āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ āĻā§? (What is Polymorphism?)Âļ
- āĻļāĻŦā§āĻĻāĻāϤ āĻ āϰā§āĻĨ:
Poly= āĻ āύā§āĻ (Many)Morph= āϰā§āĻĒ āĻŦāĻž āĻāĻā§āϤāĻŋ (Forms)-
āĻ āϰā§āĻĨāĻžā§, Polymorphism āĻļāĻŦā§āĻĻā§āϰ āĻ āϰā§āĻĨ āĻšāϞ⧠"āĻŦāĻšā§āϰā§āĻĒāĻŋāϤāĻž" (Many Forms)āĨ¤
-
āϏāĻāĻā§āĻāĻž: āĻ āĻŦāĻā§āĻā§āĻ āĻāϰāĻŋāϝāĻŧā§āύā§āĻā§āĻĄ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻā§ā§āϰ (OOP) āĻāĻŽāύ āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ, āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻ āύāĻžāĻŽā§āϰ āĻŽā§āĻĨāĻĄ āĻāĻŋāύā§āύ āĻāĻŋāύā§āύ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāĻĒāϰ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻŋāϤā§āϤāĻŋāϤ⧠āĻāĻŋāύā§āύ āĻāĻŋāύā§āύ āĻāĻāϰāĻŖ āĻĒā§āϰāĻāĻžāĻļ āĻāϰ⧠(Polymorphism allows methods to do different things based on the object it is acting upon, even though the method name and signature might be the same)āĨ¤
- āĻŽā§āϞ āĻĒā§āϰāĻāĻžāϰāĻā§āĻĻ: āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ āĻĒā§āϰāϧāĻžāύāϤ āĻĻā§āĻ āĻĒā§āϰāĻāĻžāϰ:
- Compile Time Polymorphism (āĻāĻŽā§āĻĒāĻžāĻāϞ-āĻāĻžāĻāĻŽ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ)
- Run Time Polymorphism (āϰāĻžāύ-āĻāĻžāĻāĻŽ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ)
⧍. āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāĻžāĻāĻŽ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ (Compile Time Polymorphism)Âļ
- āĻ āύā§āϝ āύāĻžāĻŽ: āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ (Static Polymorphism) āĻŦāĻž āĻāϰā§āϞāĻŋ āĻŦāĻžāĻāύā§āĻĄāĻŋāĻ (Early Binding)āĨ¤
- āĻā§āĻāĻžāĻŦā§ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āĻŋāϤ āĻšā§: Method Overloading-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āĻŋāϤ āĻšā§āĨ¤
- āĻā§āύ āĻāĻŽā§āĻĒāĻžāĻāϞ-āĻāĻžāĻāĻŽ āĻŦāϞāĻž āĻšā§? āĻĒā§āϰā§āĻā§āϰāĻžāĻŽā§āϰ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻžāϰ āϏāĻŽā§āĻ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻāϰā§āĻā§āĻŽā§āύā§āĻā§āϰ āϏāĻāĻā§āϝāĻž, āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻŦāĻž āϏāĻŋāĻā§ā§ā§āύā§āϏ āĻĻā§āĻā§ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύā§ā§ āϝ⧠āĻā§āύ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšāĻŦā§āĨ¤
- āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ (
CalculatorClass):
class Calculator { // āĻĻā§āĻāĻŋ int āϝā§āĻ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ public int add(int a, int b) { return a + b; } // āϤāĻŋāύāĻāĻŋ int āϝā§āĻ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ (āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϏāĻāĻā§āϝāĻž āĻāĻŋāύā§āύ) public int add(int a, int b, int c) { return a + b + c; } // āĻĻā§āĻāĻŋ double āϝā§āĻ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ (āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻāĻŋāύā§āύ) public double add(double a, double b) { return a + b; } } public class Main { public static void main(String[] args) { Calculator calc = new Calculator(); System.out.println(calc.add(5, 10)); // Output: 15 (āĻĒā§āϰāĻĨāĻŽ add āĻāϞ āĻšāĻŦā§) System.out.println(calc.add(5, 10, 15)); // Output: 30 (āĻĻā§āĻŦāĻŋāϤā§ā§ add āĻāϞ āĻšāĻŦā§) System.out.println(calc.add(5.5, 10.5)); // Output: 16.0 (āϤā§āϤā§ā§ add āĻāϞ āĻšāĻŦā§) } }
āĻāĻāĻžāύ⧠add() āĻŽā§āĻĨāĻĄā§āϰ āύāĻžāĻŽ āĻāĻāĻ āĻšāϞā§āĻ āϤāĻžāϰ āĻāĻŋāύā§āύ āĻāĻŋāύā§āύ āĻĢāϰā§āĻŽ (āĻŦāĻšā§āϰā§āĻĒāĻŋāϤāĻž) āϰā§ā§āĻā§ āϝāĻž āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāĻžāĻāĻŽā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āĨ¤
ā§Š. āϰāĻžāύ āĻāĻžāĻāĻŽ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ (Run Time Polymorphism)Âļ
- āĻ āύā§āϝ āύāĻžāĻŽ: āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ (Dynamic Polymorphism) āĻŦāĻž āϞā§āĻ āĻŦāĻžāĻāύā§āĻĄāĻŋāĻ (Late Binding)āĨ¤
- āĻā§āĻāĻžāĻŦā§ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āĻŋāϤ āĻšā§: Inheritance (āĻāϤā§āϤāϰāĻžāϧāĻŋāĻāĻžāϰ) āĻāĻŦāĻ Method Overriding-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§āĨ¤
- Method Overriding āĻā§? āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āĻā§āύ⧠āĻŽā§āĻĨāĻĄāĻā§ āϝāĻĻāĻŋ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ⧠āĻāϏ⧠āĻĒā§āύāϰāĻžā§ āύāĻŋāĻāϏā§āĻŦ āϞāĻāĻŋāĻ āĻĻāĻŋā§ā§ āϏāĻāĻā§āĻāĻžā§āĻŋāϤ (override) āĻāϰāĻž āĻšā§, āϤāĻŦā§ āϤāĻžāĻā§ āĻŽā§āĻĨāĻĄ āĻāĻāĻžāϰāϰāĻžāĻāĻĄāĻŋāĻ āĻŦāϞā§āĨ¤
- āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ (
Animal,Dog,Cat):
// āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏ class Animal { public void sayHello() { System.out.println("..."); } } // āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ ā§§ class Dog extends Animal { @Override public void sayHello() { System.out.println("Woof"); } } // āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ ⧍ class Cat extends Animal { @Override public void sayHello() { System.out.println("Meow"); } }
ā§Ē. āĻĒā§āϝāĻžāϰā§āύā§āĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāĻŦāĻ āĻāĻžāĻāϞā§āĻĄ āĻ āĻŦāĻā§āĻā§āĻ (Parent Reference to Child Object)Âļ
āĻāĻžāĻāĻžāϤ⧠āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞā§āϰ āĻā§āϤāϰ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āĻāϏāĻžāĻāύ āĻāϰāĻž āϝāĻžā§:
Animal dog = new Dog();
Animal cat = new Cat();
dog.sayHello(); // Output: Woof
cat.sayHello(); // Output: Meow
āϰā§āĻĢāĻžāϰā§āύā§āϏ āϏāĻāĻā§āϰāĻžāύā§āϤ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āύāĻŋā§āĻŽāĻžāĻŦāϞā§:Âļ
- āĻŦā§āϧ: āĻĒā§āϝāĻžāϰā§āύā§āĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āĻāĻžāĻāϞā§āĻĄ āĻ
āĻŦāĻā§āĻā§āĻ āϰāĻžāĻāĻž āϝāĻžā§ (
Animal dog = new Dog();)āĨ¤ - āĻ
āĻŦā§āϧ (āĻāϞā§āĻā§āĻāĻž āϏāĻŽā§āĻāĻŦ āύā§): āĻāĻžāĻāϞā§āĻĄ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻ
āĻŦāĻā§āĻā§āĻ āϏāϰāĻžāϏāϰāĻŋ āϰāĻžāĻāĻž āϝāĻžā§ āύāĻž (
Dog dog = new Animal();â āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāϰ āĻĻā§āĻŦā§)āĨ¤ - āĻ
āĻŦā§āϧ (āϏāĻŽā§āĻĒāϰā§āĻāĻšā§āύ āĻā§āϞāĻžāϏ): āĻāύāĻšā§āϰāĻŋāĻā§āύā§āϏ āϏāĻŽā§āĻĒāϰā§āĻ āύā§āĻ āĻāĻŽāύ āĻā§āϞāĻžāϏā§āϰ āĻ
āĻŦāĻā§āĻā§āĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āϰāĻžāĻāĻž āϝāĻžā§ āύāĻž (
Animal dog = new Student();â āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāϰ āĻĻā§āĻŦā§)āĨ¤
ā§Ģ. āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻŽā§āĻĨāĻĄ āĻĄāĻŋāϏāĻĒā§āϝāĻžāĻ (Dynamic Method Dispatch)Âļ
- āĻā§āύ āϰāĻžāύ-āĻāĻžāĻāĻŽ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻāĻŽ āĻŦāϞāĻž āĻšā§?
Animal dog = new Dog();āϞā§āĻāĻžāϰ āϏāĻŽā§newāĻāĻŋ-āĻā§āĻžāϰā§āĻĄā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰāĻžāύ-āĻāĻžāĻāĻŽā§ āĻŽā§āĻŽā§āϰāĻŋ āĻ ā§āϝāĻžāϞā§āĻā§āĻ āĻšā§ āĻāĻŦāĻ āĻšāĻŋāĻĒ āĻŽā§āĻŽā§āϰāĻŋāϤ⧠āĻĒā§āϰāĻā§āϤDogāĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻšā§āĨ¤-
āϝāĻāύ
dog.sayHello()āĻāϞ āĻāϰāĻž āĻšā§, āϤāĻāύ āĻāĻžāĻāĻž āĻāĻžāϰā§āĻā§ā§āĻžāϞ āĻŽā§āĻļāĻŋāύ (JVM) āϰāĻžāύ-āĻāĻžāĻāĻŽā§ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰ⧠āϝ⧠āϰā§āĻĢāĻžāϰā§āύā§āϏāĻāĻŋAnimal-āĻāϰ āĻšāϞā§āĻ āĻŽā§āĻŽā§āϰāĻŋāϤ⧠āĻāϏāϞ āĻ āĻŦāĻā§āĻā§āĻāĻāĻŋDog-āĻāϰāĨ¤ āĻĢāϞ⧠JVM āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§DogāĻā§āϞāĻžāϏā§āϰ āĻāĻāĻžāϰāϰāĻžāĻāĻĄā§āĻĄ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻāϰā§āĨ¤ -
Dynamic Method Dispatch: āϰāĻžāύ-āĻāĻžāĻāĻŽā§ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻāĻžāϞāĻŋ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšā§ āϝ⧠āĻā§āύ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāϞāĻŦā§âāĻāĻ āĻĒā§āϰ⧠āĻŽā§āĻāĻžāύāĻŋāĻāĻŽāĻā§ Dynamic Method Dispatch āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤
ā§Ŧ. āĻāĻĒāĻāĻžāϏā§āĻāĻŋāĻ āĻāĻŦāĻ āĻĄāĻžāĻāύāĻāĻžāϏā§āĻāĻŋāĻ (Upcasting & Downcasting)Âļ
āĻ. āĻāĻĒāĻāĻžāϏā§āĻāĻŋāĻ (Upcasting):Âļ
- āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āĻ āĻŦāĻā§āĻā§āĻāĻā§ āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āϰāĻžāĻāĻž (āϞā§āϝāĻŧāĻžāϰ āĻšāĻžāϝāĻŧāĻžāϰāĻžāϰā§āĻāĻŋ āĻĨā§āĻā§ āĻāĻĒāĻžāϰ āĻšāĻžāϝāĻŧāĻžāϰāĻžāϰā§āĻāĻŋāϤ⧠āϝāĻžāĻā§āĻž)āĨ¤
- āĻāĻāĻŋ āĻāĻžāĻāĻžāϤ⧠āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§ (Implicitly) āĻāĻā§āĨ¤
āĻ. āĻĄāĻžāĻāύāĻāĻžāϏā§āĻāĻŋāĻ (Downcasting):Âļ
- āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āĻĨāĻžāĻāĻž āĻāĻžāĻāϞā§āĻĄ āĻ āĻŦāĻā§āĻā§āĻāĻā§ āĻĒā§āύāϰāĻžā§ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āύāĻŋāĻāϏā§āĻŦ āϰā§āĻĢāĻžāϰā§āύā§āϏ⧠āĻāύāĻāĻžāϰā§āĻ āĻāϰāĻžāĨ¤
- āĻāĻāĻŋ āĻāĻā§āϏāĻĒā§āϞāĻŋāϏāĻŋāĻāϞāĻŋ (Explicitly) āĻāĻžāĻāĻĒāĻāĻžāϏā§āĻ āĻāϰāϤ⧠āĻšā§ (āϝā§āĻŽāύ āĻĒā§āϰāĻŋāĻŽāĻŋāĻāĻŋāĻ āĻāĻžāĻāĻĒā§
doubleāĻĨā§āĻā§int-āĻ āĻāĻžāϏā§āĻ āĻāϰāĻžāϰ āĻŽāϤā§)āĨ¤
ā§. āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāĻžāĻāĻĒā§āϰ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž (Crucial Rule: What Can Be Accessed?)Âļ
-
āĻĒā§āϰāĻļā§āύ:
DogāĻā§āϞāĻžāϏ⧠āϝāĻĻāĻŋ āύāĻŋāĻāϏā§āĻŦ āĻā§āύ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻŽā§āĻĨāĻĄ āĻĨāĻžāĻā§ (āϝā§āĻŽāύsayBye()), āϝāĻžAnimalāĻā§āϞāĻžāϏ⧠āύā§āĻâāϤāĻžāĻšāϞ⧠āĻāĻŋAnimal dog = new Dog();āĻĻāĻŋā§ā§dog.sayBye()āĻāϞ āĻāϰāĻž āϝāĻžāĻŦā§?
-
āĻāĻžāϰāĻŖ:
- āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āϏāĻŦāϏāĻŽā§ āĻŽā§āĻĨāĻĄ āĻāϞā§āϰ āĻŦā§āϧāϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰ⧠āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāĻžāĻāĻĒ (
Animal) āĻĻā§āĻā§, āĻ āĻŦāĻā§āĻā§āĻ āĻāĻžāĻāĻĒ āĻĻā§āĻā§ āύā§āĨ¤ -
āϝā§āĻšā§āϤā§
AnimalāĻā§āϞāĻžāϏā§āϰ āĻŽāϧā§āϝā§sayBye()āύāĻžāĻŽā§āϰ āĻā§āύ⧠āĻŽā§āĻĨāĻĄ āύā§āĻ, āϤāĻžāĻ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĻā§ā§ āύāĻžāĨ¤ -
āϏāĻŽāĻžāϧāĻžāύ: āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āύāĻŋāĻāϏā§āĻŦ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻ āĻŽā§āĻĨāĻĄ āĻāϞ āĻāϰāϤ⧠āĻšāϞ⧠āĻšā§ āϏāϰāĻžāϏāϰāĻŋ āĻāĻžāĻāϞā§āĻĄ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§ (
Dog bob = new Dog();), āĻ āĻĨāĻŦāĻž āĻĄāĻžāĻāύāĻāĻžāϏā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ (((Dog) bob).sayBye();)āĨ¤
đ āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ (Summary Table)Âļ
| āĻŦāĻŋāώ⧠| Compile Time Polymorphism | Run Time Polymorphism |
|---|---|---|
| āĻ āύā§āϝ āύāĻžāĻŽ | Method Overloading / Static Binding | Method Overriding / Dynamic Method Dispatch |
| āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āĻāĻāύ āĻšā§? | āĻā§āĻĄ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻžāϰ āϏāĻŽā§ | āĻā§āĻĄ āϰāĻžāύ āĻāϰāĻžāϰ āϏāĻŽā§ (JVM āĻĻā§āĻŦāĻžāϰāĻž) |
| āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύā§āϰ āĻāĻĒāĻžā§ | āĻāĻāĻ āĻā§āϞāĻžāϏ⧠āĻŽā§āĻĨāĻĄā§āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ | āĻāύāĻšā§āϰāĻŋāĻā§āύā§āϏā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāĻŦāĻā§āϞāĻžāϏ⧠āĻŽā§āĻĨāĻĄ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰ⧠|
| āϰā§āĻĢāĻžāϰā§āύā§āϏā§āϰ āĻā§āĻŽāĻŋāĻāĻž | āĻāϞ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄā§āϰ āϏā§āĻŦāĻžāĻā§āώāϰ āĻā§āĻ āĻāϰ⧠| āĻŽā§āĻĨāĻĄ āĻ ā§āϝāĻžāĻā§āϏā§āϏā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§ā§, āϤāĻŦā§ āϰāĻžāύāĻāĻžāĻāĻŽā§ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāĻāĻžāϰāϰāĻžāĻāĻĄā§āĻĄ āĻāĻžāϰā§āϏāύ āĻāϞ⧠|
| āĻāĻžāϏā§āĻāĻŋāĻ | āĻĒā§āϰāϝā§āĻā§āϝ āύ⧠| āĻāĻĒāĻāĻžāϏā§āĻāĻŋāĻ (Implicit) āĻāĻŦāĻ āĻĄāĻžāĻāύāĻāĻžāϏā§āĻāĻŋāĻ (Explicit) |