CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /Java๋กœ ๊ตฌํ˜„
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

Java๋กœ ๊ตฌํ˜„

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ƒ์†์˜ Java OOP ํŒจ๋Ÿฌ๋‹ค์ž„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†์ž, ์ฆ‰ ์ž์‹ ํด๋ž˜์Šค๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java implements ํ‚ค์›Œ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋กœ ์ด๋™ํ•˜์—ฌ Java์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์ž‘์—…์„ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ธ์ง€, ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ตฌํ˜„์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ

"์ธํ„ฐํŽ˜์ด์Šค"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋งŽ์ด ๋“ค์–ด๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปดํ“จํ„ฐ์—๋Š” ์ž…๋ ฅ ์ธํ„ฐํŽ˜์ด์Šค(๋งˆ์šฐ์Šค ๋ฐ ํ‚ค๋ณด๋“œ)๊ฐ€ ์žˆ๊ณ  ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„“์€ ์˜๋ฏธ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋‘ ๋‹น์‚ฌ์ž ๊ฐ„์˜ ๋งํฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋™์ผํ•œ ํ‚ค๋ณด๋“œ ๋˜๋Š” TV ๋ฆฌ๋ชจ์ฝ˜์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํŠนํžˆ Java์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ์ง€์ •ํ•˜๋Š” ํŠน์ • ๊ณ„์•ฝ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋™์ž‘๋งŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด Java์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
public interface MyInterface  {

     // constants declaration
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
๋‹ค์Œ์€ Java ๊ตฌํ˜„ ์˜ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค .
public class MyClass implements MyInterface{
//implementing the methods of MyInterface
//Other code
}
์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ๋™์ž‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "์›€์ง์ž„"๊ณผ ๊ฐ™์€ ๋™์ž‘์€ ์ž์ „๊ฑฐ, ์‚ฌ๋žŒ, ์ž๋™์ฐจ, ๊ฐ•์˜ ๋ฌผ ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๊ฐ์ฒด์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ค์—„์น˜๋Š” ํ–‰๋™์€ ์˜ค๋ฆฌ, ๋ฐฐ, ๋ฌผ๊ณ ๊ธฐ์˜ ํ–‰๋™์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฌผ์ฒด๋“ค์€ ์›€์ง์ด๊ฑฐ๋‚˜ ํ—ค์—„์น  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์™ธ์—๋Š” ๊ณตํ†ต์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ˆ˜์˜๊ณผ์˜ ์›€์ง์ž„์€ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java์—์„œ๋Š” Duck , Boat , Fish ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ Java ๊ตฌํ˜„ ํ‚ค์›Œ๋“œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ ์˜ˆ ๊ตฌํ˜„

public interface Swimmable {

   void moveForward();
   void TurnRight();
   void TurnLeft();

}
๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ฉ”์„œ๋“œ ์ž์ฒด๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์ง์„ ์œผ๋กœ ํ—ค์—„์น  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ค๋ฅธ์ชฝ๊ณผ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.
public class Duck implements Swimmable {
//implementing the methods
   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

}

public class Fish implements Swimmable {

   public void moveForward() {
       System.out.println("I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft() {
       System.out.println("I am turning left...");
   }

   public void turnUp(){
       System.out.println("I am turning up...");
   }

   public void turnDown(){
       System.out.println("I am turning down...");
   }

   public void Stop() {
       System.out.println("I am relaxing somewhere under the water surface...");
   }
}
Swimmable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๊ณ„์•ฝ์— ๋”ฐ๋ผ ์•ž์œผ๋กœ ํ—ค์—„์น  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ ( moveForward() ๋ฉ”์„œ๋“œ ๊ตฌํ˜„) ์˜ค๋ฅธ์ชฝ๊ณผ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์˜ ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฆฌ์™€ ๋ฌผ๊ณ ๊ธฐ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ—ค์—„์นœ๋‹ค. ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์œ„์•„๋ž˜๋กœ ํ—ค์—„์น  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Swimmable ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด Tuna ๋˜๋Š” Salmon๊ณผ ๊ฐ™์€ Fish ํด๋ž˜์Šค์˜ ์ž์‹์„ ๋งŒ๋“ค๋ฉด ๋ชจ๋“  "Fish"์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ„์•„๋ž˜๋กœ ํ—ค์—„์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java๋กœ ๊ตฌํ˜„ - 1

Java์˜ ๋‹ค์ค‘ ์ธํ„ฐํŽ˜์ด์Šค

์ด๋ฏธ ์•Œ๊ณ  ๊ณ„์‹œ๊ฒ ์ง€๋งŒ Java๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ˆ˜ํผํด๋ž˜์Šค์—์„œ๋งŒ ์ƒ์†๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  Java์—์„œ "๋‹ค์ค‘ ์ƒ์†"์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
To implement multiple interfaces, use the next syntax:
interface MyFirstInterface {
   public void myMethod();
}
interface MySecondInterface {
   public void myOtherMethod();
}

// MyClass implements both MyFirstInterface and MySecondInterface
class MyClass implements MyFirstInterface, MySecondInterface {
   public void myMethod() {
      //method implementation
   }
   public void myOtherMethod() {
     //method implementation
   }
}

๋‹ค์ค‘ ์ธํ„ฐํŽ˜์ด์Šค ์˜ˆ

์˜ค๋ฆฌ๋Š” ํ—ค์—„์น  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋น„ํ–‰ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์˜ค๋ฆฌ์— ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค.
public interface Flyable {
   double startAge = 0.1;
   void fly();
}

public class Duck implements Swimmable, Flyable {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒˆ, ๋น„ํ–‰๊ธฐ, ์Šค์นด์ด ๋‹ค์ด๋ฒ„, ๋ฏผ๋“ค๋ ˆ์— ์˜ํ•ด ๊ตฌํ˜„๋œ๋‹ค๋ฉด ๊ทธ๋“ค์˜ ๋น„ํ–‰์€ ์™„์ „ํžˆ ๋‹ค๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION