CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /Java๋Š” ์˜ˆ์ œ๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

Java๋Š” ์˜ˆ์ œ๋กœ ํ‚ค์›Œ๋“œ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

Java ํ™•์žฅ ํ‚ค์›Œ๋“œ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Java์—์„œ extends๋Š” ์ž์‹ ํด๋ž˜์Šค์™€ ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ„์˜ ์ƒ์†์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.
Extends In Java๋Š” ํด๋ž˜์Šค ์„ ์–ธ ์ค‘์— ์ž์‹ ํด๋ž˜์Šค์™€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์ด ํ•จ๊ป˜ ์ž‘์„ฑ๋˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ์„ ํš๋“ํ•˜๊ฑฐ๋‚˜ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ๋ฌธ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๋™์•ˆ extends ํ‚ค์›Œ๋“œ๋Š” ์ž์‹ ํด๋ž˜์Šค ์ด๋ฆ„ ๋‹ค์Œ์— ๋ถ€๋ชจ ํด๋ž˜์Šค ์ด๋ฆ„์ด ์˜ต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

class ParentClass{ ...}

class ChildClass extends ParentClass { ... }

Java์˜ ์ƒ์†์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Java์—์„œ extends ํ‚ค์›Œ๋“œ ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € ์ƒ์†์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Java๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์–ธ์–ด์ž…๋‹ˆ๋‹ค. OOP๋Š” ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํ‘œํ˜„ํ•ด์•ผ ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค ๊ฐ„์— ํŠน์ • ๊ด€๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†์€ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ƒ์†์€ ๊ฐœ์ฒด ๊ฐ„์˜ Is-A-Relationship์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ƒ์†์€ ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์†์„ฑ์„ ํš๋“ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ž์‹ ํด๋ž˜์Šค ๋˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค๋ผ๊ณ  ํ•˜๊ณ  ์ƒ์†๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค ๋˜๋Š” ์Šˆํผ ํด๋ž˜์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅํ•˜๋‹คJava์—์„œ ํด๋ž˜์Šค ๊ฐ„์˜ ์ƒ์†์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.

์˜ˆ

Java extends ํ‚ค์›Œ๋“œ์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

class Animal {

  // fields of the parent class
  String name;
  String sound;
  int noOfLegs;

  // default constructor of the parent class
  public Animal (){}
  
  // parameterized constructor of the parent class
  public Animal (String name, String sound, int legs){
      this.name = name;
      this.sound = sound;
      this.noOfLegs = legs;
  }

  // method of the parent class
  public void display() {
    System.out.println("My name is " + name);
    System.out.println("My sound is " + sound);
    System.out.println("My no. of legs is " + noOfLegs);
  } 
}

// inherit from Animal
class Dog extends Animal {
  String color;
  String breed;
  // new method in subclass
  
  public Dog(String name, String sound ,int legs, String color, String breed){
      super(name,sound,legs);
      this.color = color;
      this.breed = breed;
  }
  
   public void display() {
    super.display();
    System.out.println("My color is " + color);
    System.out.println("My breed is " + breed);
    
  }
}

public class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog dog1 = new Dog("Billy","Bark",4,"Brown","Labrador");

    dog1.display();
    
     System.out.println("------------------");
    
    Dog dog2 = new Dog("Grace","Bark",4,"Black","Husky");

    dog2.display();
    
    System.out.println("------------------");
      
    Dog dog3 = new Dog("Hugo","Bark",4,"Gray","Poodle");

    dog3.display();


  }
}

์‚ฐ์ถœ

๋‚ด ์ด๋ฆ„์€ Billy ๋‚ด ์†Œ๋ฆฌ๋Š” Bark My no. ๋‚ด ์ƒ‰๊น”์€ ๊ฐˆ์ƒ‰ ๋‚ด ํ’ˆ์ข…์€ ๋ž˜๋ธŒ๋ผ๋„ ------------------ ๋‚ด ์ด๋ฆ„์€ ๊ทธ๋ ˆ์ด์Šค ๋‚ด ์†Œ๋ฆฌ๋Š” ๋ฐ”ํฌ ๋‚ด no. ๋‚ด ์ƒ‰๊น”์€ ๊ฒ€์€์ƒ‰ ๋‚ด ํ’ˆ์ข…์€ ํ—ˆ์Šคํ‚ค ------------------ ๋‚ด ์ด๋ฆ„์€ Hugo ๋‚ด ์†Œ๋ฆฌ๋Š” Bark ๋‚ด no. ๋‹ค๋ฆฌ ๊ธธ์ด๋Š” 4์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ‰๊น”์€ ํšŒ์ƒ‰์ž…๋‹ˆ๋‹ค. ๋‚ด ํ’ˆ์ข…์€ ํ‘ธ๋“ค์ž…๋‹ˆ๋‹ค.

์„ค๋ช…

์œ„์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์—์„œ extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Java์—์„œ ์ƒ์†์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋‘ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € Animal ํด๋ž˜์Šค ์ธ ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ๋‘˜์งธ, Dog ํด๋ž˜์Šค ์ธ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . Dog ํด๋ž˜์Šค ๋Š” Animal ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค . ์ด ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Dog ํด๋ž˜์Šค๋Š” Animal ํด๋ž˜์Šค ์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค . ์ž์‹ ํด๋ž˜์Šค๋Š” ์ด์ œ ์ด๋Ÿฌํ•œ ์†์„ฑ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ๋‹ค์‹œ ์„ ์–ธํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ด ๊ฒŒ์‹œ๋ฌผ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ Java์˜ extends ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์…จ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค . ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด Java์—์„œ ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค . ๋˜ํ•œ Java์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํŠน์„ฑ๊ณผ ์ƒ์†์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํด๋ž˜์Šค ๊ฐ„์— ์ƒ์†์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์ด ๊ฐœ๋…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜์—ฌ ๋” ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋…์˜ ๋” ๊นŠ์€ ๋ช…๋ น์„ ์œ„ํ•ด ๊ณ„์† ์—ฐ์Šตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋•Œ๊นŒ์ง€ ๊ณ„์† ์„ฑ์žฅํ•˜๊ณ  ๊ณ„์† ๋น›๋‚˜์‹ญ์‹œ์˜ค!
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION