Skip to content

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 āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϞāĻŋāĻ–āϤ⧇ āĻšā§ŸāĨ¤

    public abstract void sayHello();
    

  • āĻ•āύāĻ•ā§āϰāĻŋāϟ āĻŽā§‡āĻĨāĻĄ (Concrete Method): āϝ⧇ āĻŽā§‡āĻĨāĻĄā§‡āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϏ⧁āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŦāĻĄāĻŋ āĻŦāĻž āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ { ... } āĻĨāĻžāϕ⧇, āϤāĻžāϕ⧇ āĻ•āύāĻ•ā§āϰāĻŋāϟ āĻŽā§‡āĻĨāĻĄ āĻŦāϞāĻž āĻšā§ŸāĨ¤


ā§Š. āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻ•ā§āϞāĻžāϏ (Abstract Class) āĻ“ āĻāϰ āύāĻŋ⧟āĻŽāĻžāĻŦāϞ⧀Âļ

  • āĻ•ā§āϞāĻžāϏ āĻĄāĻŋāĻ•ā§āϞāĻžāϰ⧇āĻļāύ: āϕ⧋āύ⧋ āĻ•ā§āϞāĻžāϏ⧇ āϝāĻĻāĻŋ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻāĻ•āϟāĻŋāĻ“ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ āϏ⧇āχ āĻ•ā§āϞāĻžāϏāϟāĻŋāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ abstract āĻ•ā§āϞāĻžāϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

    public abstract class Animal {
        public abstract void sayHello(); // Abstract Method
    }
    

  • āĻŽā§‚āϞ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϏāĻŽā§‚āĻš:

  • Abstract āĻ“ Concrete āĻŽā§‡āĻĨāĻĄā§‡āϰ āϏāĻšāĻžāĻŦāĻ¸ā§āĻĨāĻžāύ: āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻ•ā§āϞāĻžāϏ⧇ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ•āύāĻ•ā§āϰāĻŋāϟ āĻŽā§‡āĻĨāĻĄāĻ“ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ (āϝ⧇āĻŽāύ: āϏāĻŦ āĻĒā§āϰāĻžāĻŖā§€āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϘ⧁āĻŽāĻžāύ⧋āϰ āĻĒā§āϰāĻ•ā§āϰāĻŋ⧟āĻž āĻāĻ•āχ, āϤāĻžāχ sleep() āĻŽā§‡āĻĨāĻĄāϟāĻŋāϕ⧇ āĻŦāĻĄāĻŋāϏāĻš āĻ•āύāĻ•ā§āϰāĻŋāϟ āϰāĻžāĻ–āĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇)āĨ¤
  • āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āĻ›āĻžā§œāĻžāĻ“ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻ•ā§āϞāĻžāϏ: āϕ⧋āύ⧋ āĻ•ā§āϞāĻžāϏ⧇ āĻāĻ•āϟāĻŋāĻ“ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āύāĻž āĻĨāĻžāĻ•āϞ⧇āĻ“ āĻ•ā§āϞāĻžāϏāϟāĻŋāϕ⧇ abstract āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤
  • āύāϰāĻŽāĻžāϞ āĻ•ā§āϞāĻžāϏ⧇ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āύāĻŋāώāĻŋāĻĻā§āϧ: āϕ⧋āύ⧋ āϏāĻžāϧāĻžāϰāĻŖ (Non-abstract) āĻ•ā§āϞāĻžāϏ⧇āϰ āϭ⧇āϤāϰ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āϰāĻžāĻ–āĻž āϝāĻžā§Ÿ āύāĻžāĨ¤
  • āĻĢāĻŋāĻ˛ā§āĻĄāϏ āĻāĻŦāĻ‚ āϗ⧇āϟāĻžāϰ-āϏ⧇āϟāĻžāϰ: āϏāĻžāϧāĻžāϰāĻŖ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻŽāϤ⧋āχ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻ•ā§āϞāĻžāϏ⧇ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ (āϝ⧇āĻŽāύ: name, age) āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ Getter/Setter āĻŽā§‡āĻĨāĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

ā§Ē. āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ āĻ“ āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇āϰ āύāĻŋ⧟āĻŽ (Subclassing & Implementation)Âļ

āϝāĻ–āύ āϕ⧋āύ⧋ āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ āĻŦāĻž āϚāĻžāχāĻ˛ā§āĻĄ āĻ•ā§āϞāĻžāϏ (āϝ⧇āĻŽāύ: Dog āĻŦāĻž Cat) āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻ•ā§āϞāĻžāϏāϕ⧇ extends āĻ•āϰ⧇, āϤāĻ–āύ āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ⧇āϰ āϏāĻžāĻŽāύ⧇ ⧍āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĨāĻžāϕ⧇:

  1. āϏāĻŦāϗ⧁āϞ⧋ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻ“ āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰāĻž: āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āϟ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…ā§āϝāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻŦāĻĄāĻŋ āĻĻāĻŋā§Ÿā§‡ āϏ⧇āϟāĻŋāϕ⧇ āĻ•āύāĻ•ā§āϰāĻŋāϟ āĻ•āϰāĻžāĨ¤

    public class Dog extends Animal {
        @Override
        public void sayHello() {
            System.out.println("Woof");
        }
    }
    
    public class Cat extends Animal {
        @Override
        public void sayHello() {
            System.out.println("Meow");
        }
    }
    

  2. āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏāϕ⧇ āύāĻŋāĻœā§‡ 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) āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻž āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤

    public abstract class Vehicle {
        public abstract void accelerate();
        public abstract void decelerate();
    }
    

  • āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ 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