Schatzi Java Online Manual & Tutorial & Lecture

Ãß»óŬ·¡½º¶õ?
 

Ãß»óŬ·¡½º(abstract class)´Â Ãß»óÀûÀΠŬ·¡½º·Î½á ±× ±¸ÇöÀÌ ´ú µÇ¾ú°Å³ª ¶Ç´Â ¾ÆÁ÷Àº ¹Ì¿Ï¼º Ŭ·¡½ºÀ̹ǷΠ½ÇÁ¦ ÀνºÅϽº(¶Ç´Â °´Ã¼)¸¦ »ý¼ºÇÒ ¼ö ¾øµµ·Ï ÇÑ Å¬·¡½ºÀÔ´Ï´Ù. ´Ù½Ã ¸»Çؼ­, Ãß»óŬ·¡½º´Â °´Ã¼°¡ °¡Áö´Â Ư¼ºµéÀ» Ãß»óÈ­½ÃÄÑ ³õ¾ÒÀ» »Ó ¾ÆÁ÷ ±¸Ã¼È­ ½ÃŰÁö ¸øÇÑ Å¬·¡½ºÀ̹ǷÎ, ÀÌ Ãß»óŬ·¡½º¸¦ »ó¼ÓÇÏ´Â ÇÏÀ§Å¬·¡½º¿¡¼­ Á» ´õ ±¸Ã¼È­ ½Ã۵µ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù.

µû¶ó¼­, Ãß»óŬ·¡½º¸¦ »óÀ§Å¬·¡½º·Î ÇÏ¿© »ó¼ÓÇÏ´Â ÇÏÀ§Å¬·¡½º´Â Ãß»óŬ·¡½ºÀÎ »óÀ§Å¬·¡½º¿¡¼­ ¿ÏÀüÈ÷ ±¸ÇöÇÏÁö ¸øÇÑ ºÎºÐµéÀ» ¿ÏÀüÇÏ°Ô ±¸ÇöÇØ ÁÖ¾î¾ß¸¸ ÇÏÀ§Å¬·¡½º¿¡ ´ëÇÑ °´Ã¼ »ý¼ºÀÌ °¡´ÉÇϰí, ±×·¸Áö ¸øÇÒ °æ¿ì ÇÏÀ§Å¬·¡½º´Â »óÀ§Å¬·¡½ºÀÎ Ãß»óŬ·¡½º¿Í °°ÀÌ ¹Ì¿Ï¼ºÀ̹ǷΠÀÚüÀûÀ¸·Î °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø°í, ÀÌ ÇÏÀ§Å¬·¡½º´Â ´Ù½Ã Ãß»óŬ·¡½º°¡ µË´Ï´Ù.

 

Ãß»ó¸Þ¼Òµå´Â Ãß»óŬ·¡½º¿Í ¸¶Âù°¡Áö·Î ¾ÆÁ÷ ±¸ÇöÀÌ ÀÌ·ç¾îÁöÁö ¾Ê°í ´ÜÁö ±× ÇÁ·ÎÅäŸÀÔ¸¸À» °¡Áö°í ÀÖ´Â ¸Þ¼Òµå¸¦ ¸»ÇÕ´Ï´Ù.
 

Ãß»ó¸Þ¼Òµå´Â ¹Ì¿Ï¼º ¸Þ¼ÒµåÀ̾î¾ß ÇϹǷÎ, ¸Þ¼ÒµåÀÇ ¸öü(body)¸¦ °¡Áú ¼ö ¾ø½À´Ï´Ù. Ãß»ó¸Þ¼Òµå´Â Ŭ·¡½º°¡ °¡Á®¾ß ÇÒ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ÇÁ·ÎÅäŸÀÔ(¸Þ¼ÒµåÀÇ ÇüÅÂ)À» Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù. Ãß»ó¸Þ¼Òµå´Â ÇÏÀ§Å¬·¡½º°¡ °¡Á®¾ß ÇÒ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÕ´Ï´Ù. Ãß»ó¸Þ¼Òµå¸¦ Æ÷ÇÔÇϴ Ŭ·¡½º´Â ¹Ýµå½Ã Ãß»óŬ·¡½º·Î ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù.

Ãß»óŬ·¡½º´Â Ãß»ó¸Þ¼Òµå¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ°í, Ãß»ó¸Þ¼Òµå¸¦ Æ÷ÇÔÇϴ Ŭ·¡½º´Â ¹Ýµå½Ã Ãß»óŬ·¡½º·Î ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. Ãß»ó¸Þ¼Òµå¸¦ Æ÷ÇÔÇϰí ÀÖ´Â Ãß»óŬ·¡½º¸¦ »ó¼ÓÇÏ´Â ÇÏÀ§Å¬·¡½º´Â Ãß»óŬ·¡½º°¡ °®°í ÀÖ´Â ¸ðµç Ãß»ó¸Þ¼Òµå¸¦ ±¸ÇöÇÏ¿© ÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·² °æ¿ì, ÇÏÀ§Å¬·¡½º´Â ÇϳªÀÇ Å¬·¡½ºÃ³·³ »ç¿ëÇÒ ¼ö ÀÖ°í, ÀνºÅϽºÀÇ »ý¼ºµµ °¡´ÉÇÏÁö¸¸, Ãß»ó¸Þ¼Òµå¸¦ ¸ðµÎ ±¸ÇöÇØ ÁÖÁö ¸øÇÑ °æ¿ì¿¡´Â ÇÏÀ§Å¬·¡½ºµµ ±¸ÇöÀÌ ¿ÏÀüÈ÷ ÀÌ·ç¾îÁöÁö ¾ÊÀº Ãß»ó¸Þ¼Òµå¸¦ Æ÷ÇÔÇÏ°Ô µÇ¹Ç·Î Ãß»óŬ·¡½º°¡ µÇ¸ç,

ÀÌ ¶§ ¹Ýµå½Ã Ãß»óŬ·¡½º·Î ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì ´ÙÀ½°ú °°Àº ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Ãß»ó Ŭ·¡½º(abstract class)¿Í Ãß»ó ¸Þ¼Òµå´Â ÇØ´ç Ŭ·¡½º¿Í ¸Þ¼ÒµåÀÇ ¾Õ¿¡ abstract Ű¿öµå¸¦ »ç¿ëÇÏ¿© ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

 3 Ãß»óŬ·¡½ºÀÇ ¼±¾ð¹æ¹ý 
 

 

abstract class Ŭ·¡½ºÀ̸§ { 

   abstract ¸Þ¼Òµå¼±¾ð;        // ¸Þ¼ÒµåÀÇ ¸öü´Â ¾øÀ½ 

}

 

¿¹) 

abstract class AbstractClass { 

   abstract void abstractMethod(); 

}

 

 

 4 Ãß»ó Ŭ·¡½º ¿¹Á¦
 ÇÁ·Î±×·¥¼³¸í

Animal Ŭ·¡½º´Â sound()¿Í who()¶ó´Â abstractÇÔ¼ö¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù. ÀÌ µÎ ÇÔ¼ö°¡ ±¸Çö µÇ±âÀü¿¡´Â AnimalÀÇ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø´Ù. DogŬ·¡½º´Â Animal¿¡¼­ »ó¼ÓÀ» ¹Þ¾Æ sound ÇÔ¼ö¸¸À» ±¸ÇöÇÏ¿´´Ù. ÇÏÁö¸¸ who() abstractÇÔ¼ö¸¦ ±¸ÇöÇϱâÀü¿¡´Â Dog °´Ã¼¸¦ »ý¼ºÇÒ ¼ö¾ø´Ù. BullDogŬ·¡½º´Â who() abstractÇÔ¼ö¸¦ ±¸ÇöÇÏ¿´´Ù. ¸ðµç abstract ÇÔ¼ö°¡ ±¸ÇöÇÏ¿´±â ¶§¹®¿¡ ÀÌ Å¬·¡½º´Â °´Ã¼¸¦ »ý¼ºÇÏ¿© ½ÇÁúÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. HorseŬ·¡½º´Â AnimalÀÇ abstractÇÔ¼ö¸¦ ¸ðµÎ ±¸ÇöÇÏ¿´±â ¶§¹®¿¡ ÀÌ Å¬·¡½º´Â °´Ã¼¸¦ »ý¼ºÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù.

  class AbstractTest {

   public static void main(String args[]) {

         BullDog b = new BullDog();
         b.whoami();
         b.who();
         b.sound();

         Horse h = new
Horse();
        
h.whoami();
        
h.who();
         h.sound();
   }

}

 

abstract class Animal {  

   public abstract void sound();//¸öü¾øÀ½
   public abstract void who();//¸öü ¾øÀ½  

   public void whoami()
   { 
            System.out.println("I am animal"
);
   }
}

  abstract class Dog extends Animal
{
 
   public void
sound()
   { 
            System.out.println("Mung Mung"
);
   }
}
 

class BullDog extends Dog
{
   public void
who()
   {
            System.out.println("I am animal , BullDog"
);
   }
}

 

class Horse extends Animal
{

    public void who()
    {
        System.out.println("I am Horse"
);
    }

    public void sound()
  
 {
        System.out.println("Hi hi!!1 hing"
);
   
}
}

°á°ú 

I am anima

l I am animal , BullDog

Mung Mung

 

I am animal

I am Horse

Hi hi!!1 hing

 


Copyright ¨Ï 1999-2000 Schatzi. All rights reserved.
http://www.jabook.org
http://schatzi.konkuk.ac.kr