추상클래스


  • 추상클래스 (Abstract Class)

    • 추상메서드(abstract method, 구현 코드 없이 메서드의 선언만 있는 것)를 포함한 클래스

    • abstract 예약어 사용

    • 추상클래스는 인스턴스화 불가능 (new할 수 없음)

  • 추상클래스의 구현

    • 구현코드가 없는 메서드 > abstract로 선언

    • abstract로 선언된 메서드를 가진 클래스 > abstract로 선언

    • abstract로 선언된 추상 클래스는 인스턴스화 할 수 없음

    • 추상클래스 내 메서드는 하위클래스가 상속하여 구현 (필요에 따라 재정의)


  • ex)

    • Animals.java

        public abstract class Animals {
      
            public abstract void duck();
            public abstract void frog();
                  
            void cat() {
                System.out.println("야옹");
            }
                  
            void dog() {
                System.out.println("멍멍");
            }
        }
      
    • AnimalName.java

        public class AnimalName extends Animals {
      
            @Override
            public void duck() {
                System.out.println("오리");
            }
      
            @Override
            public void frog() {
                System.out.println("개구리");
            }
      
        }
      
    • Cry.java

        public abstract class Cry extends Animals {
        //추상메서드를 모두 구현하지 않으면 abstract 클래스가 되어야 함	
                  
            @Override
            public void frog() {
                System.out.println("개굴개굴");
            }
      
        }
      
    • AnimalCry.java

        public class AnimalCry extends Cry {
      
            @Override
            public void duck() {
                System.out.println("꽥꽥");
            }
      
        }
      
    • Main.java

        public class Main {
      
            public static void main(String[] args) {
                  
                AnimalName animalName = new AnimalName();
                animalName.cat();
                animalName.duck();
                  
                AnimalCry animalCry = new AnimalCry();
                animalCry.dog();
                animalCry.frog();
            }
        }
      

Categories:

Java