AbstractionÂļ
āĻāĻāĻžāύ⧠āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāĻŋāĻĄāĻŋāĻāĻāĻŋāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŦāĻŋāώ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤāĻāĻžāĻŦā§ āĻāĻāĻžāϰ āĻāϰ⧠āĻā§āύ⧠āĻāĻŋāĻā§ āĻŦāĻžāĻĻ āύāĻž āĻĻāĻŋā§ā§ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāĻžāĻā§āĻ āϏā§āĻāĻžāĻĄāĻŋ āύā§āĻ āϏāĻžāĻāĻŋā§ā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
đ āĻāĻžāĻāĻžāϤ⧠āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύ (Abstraction in Java): āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āύā§āĻÂļ
ā§§. āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύ āĻā§? (What is Abstraction?)Âļ
- āĻŽā§āϞāĻŋāĻ āϧāĻžāϰāĻŖāĻž: āĻ āĻŦāĻā§āĻā§āĻ āĻāϰāĻŋāϝāĻŧā§āύā§āĻā§āĻĄ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ (OOP)-āĻāϰ ā§ĒāĻāĻŋ āĻŽā§āϞ āϏā§āϤāĻŽā§āĻā§āϰ (Encapsulation, Inheritance, Polymorphism, Abstraction) āĻ āύā§āϝāϤāĻŽ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻāĻāĻŋ āϏā§āϤāĻŽā§āĻ āĻšāϞ⧠AbstractionāĨ¤
- āϏāĻāĻā§āĻāĻž: āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻāĻāĻŋāϞ āĻāĻžāĻ āĻ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻā§āĻļāύā§āϰ āĻā§āĻāĻāĻŋāύāĻžāĻāĻŋ āĻā§āĻĒāύ āϰā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āĻā§āĻŦāϞ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻŦāĻž āĻĢāĻŋāĻāĻžāϰ āϤā§āϞ⧠āϧāϰāĻžāĻā§ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύ āĻŦāϞ⧠(Hiding internal implementation details and showing only essential features)āĨ¤
- āĻŦāĻžāϏā§āϤāĻŦ āĻā§āĻŦāύā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ (āĻāϏāĻŋ āĻ āϰāĻŋāĻŽā§āĻ):
- āĻāĻāĻāĻŋ āĻāϏāĻŋ (AC) āϰāĻŋāĻŽā§āĻ āĻĻāĻŋā§ā§ āϤāĻžāĻĒāĻŽāĻžāϤā§āϰāĻž āĻŦāĻžā§āĻžāύā§-āĻāĻŽāĻžāύā§, āĻŽā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ (Auto, Manual, Dry) āĻŦāĻž āĻā§āϞāĻŋāύāĻŋāĻ āĻāĻŽāĻžāύā§āĻĄ āĻĻā§āĻā§āĻž āϝāĻžā§āĨ¤
- āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻāϏāĻŋāϰ āĻā§āϤāϰā§āϰ āϏāĻžāϰā§āĻāĻŋāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāĻā§ āĻŦāĻž āĻā§āϤāϰā§āϰ āϤāĻžāϰ āĻā§āĻāĻžāĻŦā§ āĻā§ā§āĻž āĻĻā§āĻā§āĻž āĻāĻā§ āϤāĻž āĻāĻžāύāϤ⧠āĻšā§ āύāĻžāĨ¤ āϰāĻŋāĻŽā§āĻā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻ āĻĒā§āϰ⧠āĻāϏāĻŋ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻāϰāĻž āϝāĻžā§āĨ¤ āĻāĻāĻŋāĻ āĻŦāĻžāϏā§āϤāĻŦ āĻā§āĻŦāύā§āϰ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύāĨ¤
⧍. āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ (Abstract Method)Âļ
- āĻĒā§āϰā§ā§āĻāύā§ā§āϤāĻž: āĻā§āύ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻž āĻā§āύā§āϰāĻŋāĻ āĻā§āϞāĻžāϏ⧠(āϝā§āĻŽāύ:
Animal) āĻāĻŽāύ āĻā§āύ⧠āĻāĻžāĻ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āϝāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϰā§āĻĒ āĻāĻ āĻĒāϰā§āϝāĻžā§ā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āύ⧠(āϝā§āĻŽāύ: āϏāĻŦ āĻĒā§āϰāĻžāĻŖā§āϰ āĻĄāĻžāĻ āĻŦāĻžsayHello()āĻāĻāϰāĻāĻŽ āύā§)āĨ¤ āϏā§āĻāĻžāύ⧠āĻ āϰā§āĻĨāĻšā§āύ āĻā§āύ⧠āĻŦāĻĄāĻŋ āύāĻž āĻĻāĻŋā§ā§ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻā§āĻŦāϞ āĻĄāĻŋāĻā§āϞā§ā§āĻžāϰ āĻāϰ⧠āϰāĻžāĻāĻž āĻāĻžāϞā§āĨ¤ - āϏāĻāĻā§āĻāĻž: āϝ⧠āĻŽā§āĻĨāĻĄā§āϰ āĻā§āύ⧠āĻŦāĻĄāĻŋ āĻŦāĻž āĻĄā§āĻĢāĻŋāύā§āĻļāύ (
{}) āĻĨāĻžāĻā§ āύāĻž, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŽā§āĻĨāĻĄā§āϰ āĻĄāĻŋāĻā§āϞāĻžāϰā§āĻļāύ āĻŦāĻž āϏāĻŋāĻāύā§āĻāĻžāϰ āĻĨāĻžāĻā§ āĻāĻŦāĻ āϏā§āĻŽāĻŋāĻā§āϞāύ (;) āĻĻāĻŋā§ā§ āĻļā§āώ āĻšā§, āϤāĻžāĻā§ Abstract Method āĻŦāϞā§āĨ¤ -
āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ: Access Modifier āĻ Return Type-āĻāϰ āĻŽāĻžāĻāĻāĻžāύā§
abstractāĻāĻŋ-āĻā§āĻžāϰā§āĻĄ āϞāĻŋāĻāϤ⧠āĻšā§āĨ¤
-
āĻāύāĻā§āϰāĻŋāĻ āĻŽā§āĻĨāĻĄ (Concrete Method): āϝ⧠āĻŽā§āĻĨāĻĄā§āϰ āύāĻŋāĻāϏā§āĻŦ āϏā§āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦāĻĄāĻŋ āĻŦāĻž āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻā§āĻļāύ
{ ... }āĻĨāĻžāĻā§, āϤāĻžāĻā§ āĻāύāĻā§āϰāĻŋāĻ āĻŽā§āĻĨāĻĄ āĻŦāϞāĻž āĻšā§āĨ¤
ā§Š. āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ (Abstract Class) āĻ āĻāϰ āύāĻŋā§āĻŽāĻžāĻŦāϞā§Âļ
-
āĻā§āϞāĻžāϏ āĻĄāĻŋāĻā§āϞāĻžāϰā§āĻļāύ: āĻā§āύ⧠āĻā§āϞāĻžāϏ⧠āϝāĻĻāĻŋ āĻāĻŽāĻĒāĻā§āώ⧠āĻāĻāĻāĻŋāĻ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āĻĨāĻžāĻā§, āϤāĻŦā§ āϏā§āĻ āĻā§āϞāĻžāϏāĻāĻŋāĻā§ āĻ āĻŦāĻļā§āϝāĻ
abstractāĻā§āϞāĻžāϏ āĻšāĻŋāϏā§āĻŦā§ āĻĄāĻŋāĻā§āϞā§ā§āĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
-
āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāϏāĻŽā§āĻš:
- Abstract āĻ Concrete āĻŽā§āĻĨāĻĄā§āϰ āϏāĻšāĻžāĻŦāϏā§āĻĨāĻžāύ: āĻāĻāĻāĻŋ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ⧠āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāύāĻā§āϰāĻŋāĻ āĻŽā§āĻĨāĻĄāĻ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠(āϝā§āĻŽāύ: āϏāĻŦ āĻĒā§āϰāĻžāĻŖā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻā§āĻŽāĻžāύā§āϰ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž āĻāĻāĻ, āϤāĻžāĻ
sleep()āĻŽā§āĻĨāĻĄāĻāĻŋāĻā§ āĻŦāĻĄāĻŋāϏāĻš āĻāύāĻā§āϰāĻŋāĻ āϰāĻžāĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§)āĨ¤ - āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āĻāĻžā§āĻžāĻ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ: āĻā§āύ⧠āĻā§āϞāĻžāϏ⧠āĻāĻāĻāĻŋāĻ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āύāĻž āĻĨāĻžāĻāϞā§āĻ āĻā§āϞāĻžāϏāĻāĻŋāĻā§
abstractāĻā§āώāĻŖāĻž āĻāϰāĻž āϝāĻžā§āĨ¤ - āύāϰāĻŽāĻžāϞ āĻā§āϞāĻžāϏ⧠āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āύāĻŋāώāĻŋāĻĻā§āϧ: āĻā§āύ⧠āϏāĻžāϧāĻžāϰāĻŖ (Non-abstract) āĻā§āϞāĻžāϏā§āϰ āĻā§āϤāϰ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āϰāĻžāĻāĻž āϝāĻžā§ āύāĻžāĨ¤
- āĻĢāĻŋāϞā§āĻĄāϏ āĻāĻŦāĻ āĻā§āĻāĻžāϰ-āϏā§āĻāĻžāϰ: āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞāĻžāϏā§āϰ āĻŽāϤā§āĻ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ⧠āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ (āϝā§āĻŽāύ:
name,age) āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ Getter/Setter āĻŽā§āĻĨāĻĄ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
ā§Ē. āϏāĻžāĻŦāĻā§āϞāĻžāϏ āĻ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻā§āĻļāύā§āϰ āύāĻŋā§āĻŽ (Subclassing & Implementation)Âļ
āϝāĻāύ āĻā§āύ⧠āϏāĻžāĻŦāĻā§āϞāĻžāϏ āĻŦāĻž āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ (āϝā§āĻŽāύ: Dog āĻŦāĻž Cat) āĻāĻāĻāĻŋ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏāĻā§ extends āĻāϰā§, āϤāĻāύ āϏāĻžāĻŦāĻā§āϞāĻžāϏā§āϰ āϏāĻžāĻŽāύ⧠⧍āĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻĨāĻžāĻā§:
-
āϏāĻŦāĻā§āϞ⧠āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻāϰāĻž: āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻŦāĻĄāĻŋ āĻĻāĻŋā§ā§ āϏā§āĻāĻŋāĻā§ āĻāύāĻā§āϰāĻŋāĻ āĻāϰāĻžāĨ¤
-
āϏāĻžāĻŦāĻā§āϞāĻžāϏāĻā§ āύāĻŋāĻā§ Abstract āĻā§āώāĻŖāĻž āĻāϰāĻž: āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ āϝāĻĻāĻŋ āĻŽā§āĻĨāĻĄāĻā§āϞā§āϰ āĻŦāĻĄāĻŋ āĻŦāĻž āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻā§āĻļāύ āĻĻāĻŋāϤ⧠āύāĻž āĻāĻžā§, āϤāĻŦā§ āϏā§āĻ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏāĻā§āĻ
abstractāĻā§āώāĻŖāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
ā§Ģ. āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻ āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ (Object Creation & Polymorphic Reference)Âļ
- āϏāϰāĻžāϏāϰāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āύāĻŋāώāĻŋāĻĻā§āϧ:
- āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏā§āϰ āϏāϰāĻžāϏāϰāĻŋ āĻ
āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžā§ āύāĻž (
new Animal()āϞāĻŋāĻāϞ⧠āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāϰ āĻĻā§āĻŦā§:Animal is abstract; cannot be instantiated)āĨ¤ -
āĻāĻžāϰāĻŖ: āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ⧠āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŽā§āĻĨāĻĄ āĻĨāĻžāĻā§, āϝāĻžāϰ āĻā§āύ⧠āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ āύā§āĻāĨ¤ āĻ āĻŦāĻā§āĻā§āĻ āĻŦāĻžāύāĻŋā§ā§ āĻŽā§āĻĨāĻĄ āĻāϞ āĻāϰāϞ⧠āĻāĻžāĻāĻž āĻā§ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻāϰāĻŦā§ āϤāĻž āĻāĻžāύ⧠āύāĻžāĨ¤
-
āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāĻ āϰā§āĻĢāĻžāϰā§āύā§āϏ (Polymorphic Reference):
- āĻ āĻŦāĻā§āĻā§āĻ āϏāϰāĻžāϏāϰāĻŋ āĻŦāĻžāύāĻžāύ⧠āύāĻž āĻā§āϞā§āĻ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏāĻā§ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻāĻžāĻāĻĒ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§ āĻāĻŦāĻ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āĻĻāĻŋā§ā§ āϤāĻž āĻāύāĻŋāĻļāĻŋā§āĻžāϞāĻžāĻāĻ āĻāϰāĻž āϝāĻžā§:
Animal dog = new Dog(); // āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦā§āϧ
dog.sayHello(); // āĻāĻāĻāĻĒā§āĻ: Woof
ā§Ŧ. āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻ āĻŦā§āϞā§āĻĒā§āϰāĻŋāύā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ (Vehicle Example)Âļ
- āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύ āĻŽā§āϞāϤ āĻāĻāĻāĻŋ āĻā§āĻā§āϤāĻŋ āĻŦāĻž āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
-
āĻāĻĻāĻžāĻšāϰāĻŖ: āĻā§āύ⧠āϏāĻāϏā§āĻĨāĻž āĻŦāĻž āϏāϰāĻāĻžāϰ āϝāĻžāύāĻŦāĻžāĻšāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻ āĻŋāĻ āĻāϰāϞ āϝ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžā§āĻŋāϤ⧠āĻ āĻŦāĻļā§āϝāĻ āĻāϤāĻŋ āĻŦāĻžā§āĻžāύ⧠(
accelerate) āĻāĻŦāĻ āĻāϤāĻŋ āĻāĻŽāĻžāύ⧠(decelerate/brake) āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
-
āĻĒāϰāĻŦāϰā§āϤā§āϤā§
Car,Cycle,BikeāĻāϤā§āϝāĻžāĻĻāĻŋ āĻā§āϞāĻžāϏāĻā§āϞā§VehicleāĻā§āϞāĻžāϏāĻā§ āĻāĻā§āϏāĻā§āύā§āĻĄ āĻāϰ⧠āύāĻŋāĻā§āĻĻā§āϰ āύāĻŋā§āĻŽ āĻ āύā§āϝāĻžā§ā§ āϏā§āĻ āĻŽā§āĻĨāĻĄāĻā§āϞā§āϰ āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ āĻāϰā§āĨ¤
ā§. āĻāĻā§āϏā§āϏ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ (Access Modifiers) āĻ āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύÂļ
privateāύāĻŋāώāĻŋāĻĻā§āϧ: āĻā§āύ⧠āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄāĻā§privateāĻāϰāĻž āϝāĻžā§ āύāĻžāĨ¤ āĻāĻžāϰāĻŖ āĻĒā§āϰāĻžāĻāĻā§āĻ āĻŽā§āĻĨāĻĄ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ⧠āĻāύāĻšā§āϰāĻŋāĻ āĻŦāĻž āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāĻž āϝāĻžā§ āύāĻž, āϝāĻž āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύā§āϰ āĻŽā§āϞ āĻāĻĻā§āĻĻā§āĻļā§āϝā§āϰ āĻĒāϰāĻŋāĻĒāύā§āĻĨā§āĨ¤- Default (Package-Private): āĻŽā§āĻĨāĻĄā§ āĻā§āύ⧠āĻŽāĻĄāĻŋāĻĢāĻžā§āĻžāϰ āύāĻž āĻĻāĻŋāϞ⧠āϤāĻž āĻļā§āϧ⧠āĻāĻāĻ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ āĻĨā§āĻā§ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāĻž āϝāĻžāĻŦā§āĨ¤ āĻ āύā§āϝ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ āϤāĻž āĻĻā§āĻāϤ⧠āĻŦāĻž āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻžāĨ¤
protected: āĻŽā§āĻĨāĻĄāĻāĻŋāĻā§ āĻāĻāĻ āĻĒā§āϝāĻžāĻā§āĻā§ āĻāĻŦāĻ āĻ āύā§āϝ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āϝā§āĻā§āύ⧠āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ āĻĨā§āĻā§ āϏāĻšāĻā§ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻ āĻāĻāĻžāϰāϰāĻžāĻāĻĄ āĻāϰāĻžāϰ āϏā§āϝā§āĻ āĻĻā§ā§āĨ¤
ā§Ž. āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ⧠āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āĻ āĻŦā§āϏā§āĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ (Constructor & SonarLint Rule)Âļ
- āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āϤā§āϰāĻŋ āϏāĻŽā§āĻāĻŦ: āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏā§āϰ āϏāϰāĻžāϏāϰāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āύāĻž āĻšāϞā§āĻ āĻāϤ⧠āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžā§āĨ¤
- āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰā§āϰ āĻĒā§āϰā§ā§āĻāύā§ā§āϤāĻž: āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āĻ
āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋāϰ āϏāĻŽā§ āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻā§āϞāĻžāϏā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻĢāĻŋāϞā§āĻĄāĻā§āϞā§āϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻŽāĻžāύ āϏā§āĻāĻāĻĒ (Initial setup) āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§ (āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ āĻā§āϤāϰ āĻĨā§āĻā§
super()āĻĻāĻŋā§ā§ āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āĻāϞ āĻāϰā§)āĨ¤ - SonarLint āĻā§āĻĄ āĻā§ā§āĻžāϞāĻŋāĻāĻŋ āϰā§āϞ:
- āϝā§āĻšā§āϤ⧠āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏā§āϰ āĻ
āĻŦāĻā§āĻā§āĻ āĻŦāĻžāĻāϰ⧠āĻĨā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ
newāĻĻāĻŋā§ā§ āĻŦāĻžāύāĻžāύ⧠āϝāĻžā§ āύāĻž, āϤāĻžāĻ āĻāϰ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰpublicāϰāĻžāĻāĻžāϰ āĻā§āύ⧠āϝā§āĻā§āϤāĻŋāĻāϤāĻž āύā§āĻāĨ¤ - āϤāĻžāĻ āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏā§āϰ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰāĻā§
protectedāϰāĻžāĻāĻžāĻ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻā§āĻĄāĻŋāĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏāĨ¤
⧝. āĻĒā§āϰāĻā§āĻā§āĻā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāϰā§āĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ (Bank Account Example)Âļ
- āϧāϰā§āύ,
BankAccountāĻā§āϞāĻžāϏā§creditScoreāĻĢāĻŋāϞā§āĻĄ āĻŦāĻž āϤāĻžāϰ āĻŽā§āĻĨāĻĄ āϰā§ā§āĻā§āĨ¤ - āĻāĻŽāϰāĻž āĻāĻžāĻ āύāĻž āϝ⧠āĻāĻāĻŋ āϏāĻŦāĻžāϰ āĻāύā§āϝ
publicāĻāύā§āĻŽā§āĻā§āϤ āĻĨāĻžāĻā§āĻāĨ¤ āĻāĻŦāĻžāϰprivateāϰāĻžāĻāϞ⧠āĻāϰ āϏāĻžāĻŦāĻā§āϞāĻžāϏ āĻāĻāĻŋ āĻĒāĻžāĻŦā§ āύāĻžāĨ¤ - āϤāĻžāĻ āĻāĻāĻŋ
protectedāϰāĻžāĻāĻž āĻšā§, āϝāĻžāϤ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāϰ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ (āϝā§āĻŽāύ:LoanAccount) āĻāĻāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
đ āϏāĻāĻā§āώā§āĻĒā§ āĻŽā§āϞ āĻĒā§ā§āύā§āĻāϏāĻŽā§āĻš (Quick Summary)Âļ
| āĻŦāĻŋāώ⧠| āĻŦāĻŋāĻŦāϰāĻŖ |
|---|---|
| Abstraction | āĻ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻāĻāĻŋāϞāϤāĻž āϞā§āĻāĻŋā§ā§ āĻļā§āϧ⧠āĻĒā§āϰā§ā§āĻāύā§ā§ āĻĢāĻŋāĻāĻžāϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻžāĨ¤ |
| Abstract Method | āĻŦāĻĄāĻŋ āĻāĻžā§āĻž āĻŽā§āĻĨāĻĄ āĻĄāĻŋāĻā§āϞāĻžāϰā§āĻļāύ, āϝāĻž āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏ⧠āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻāĻāĻžāĻŦā§ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻāϰāϤ⧠āĻšā§āĨ¤ |
| Abstract Class | āϝ⧠āĻā§āϞāĻžāϏā§āϰ āĻ āĻŦāĻā§āĻā§āĻ āϏāϰāĻžāϏāϰāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžā§ āύāĻž, āϤāĻŦā§ āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤ |
| Concrete Method | āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻŽā§āĻĨāĻĄ āϝāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦāĻĄāĻŋ āĻŦāĻž āĻā§āĻĄ āĻĨāĻžāĻā§āĨ¤ |
| Constructor | āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻā§āϞāĻžāϏ⧠āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋāĻā§ protected āϰāĻžāĻāĻž āĻŦā§āϏā§āĻ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏāĨ¤ |
| Private Keyword | āĻ
ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻā§āĻ āĻŽā§āĻĨāĻĄā§ āĻāĻāύ⧠private āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§ āύāĻžāĨ¤ |
Reference: Absraction in Java | Absract Class | Abstract Methods