Daily coding

Java Basic : day 11 - Abstract 추상 클래스 본문

Language/Java_basic

Java Basic : day 11 - Abstract 추상 클래스

sunnnkim 2019. 12. 2. 19:27

Abstract 추상 클래스

  class : 객체화에 대한 설계도, method의 내용이 모두 설정되어 있음
  추상메소드 : 메소드가 정의만 되어있는 요소, 구체적인 로직은 없고 ( { }없음 ) 메소드의 정의만 되어있다.
  추상클래스 : 추상 메소드를 한 개 이상 포함하고 있는 클래스


  - 추상 클래스만은 생성이 불가능함
  - 추상 클래스를 상속한 후에 자식 클래스에서 정의 후에 생성이 가능(오버라이딩)
  - instance로 설정은 가능
 
 
 
아래는 메소드의 정의부가 없기 때문에 오류가 난다.
// AbstractClass a = new AbstractClass();

 

 


추상 클래스를 상속받은 일반 클래스 생성방법 


MyClass cls = new MyClass();
추상클래스가 부모 메소드이기 때문에 아래와 같이 생성하는 것도 가능하다.

 

AbstractClass myCls = new MyClass();

 


아래와 같이 생성자 밑에 바로 정의를 해준다음 실행할 수도 있다.
AbstractClass aCls= new AbstractClass() {

         @Override
         public void abstractMethod() {
                  System.out.println("abstractMethod 상속 안하고 정의");
         }

};

         AbstractClass mCls = new MyClass();
         AbstractClass mCls1 = new YouClass();


         }

}

// 추상 클래스
abstract class AbstractClass {

         private int number;
         public void method() { // 일반 메소드
                  System.out.println("AbstractClass Method");
         }
         // 추상 메소드 선언방법 : abstract
         public abstract void abstractMethod();
}

// 추상클래스를 상속받아 사용
// 상속 후에는 반드시 모든 추상메소드를 오버라이딩 해줘야 실행이 가능하다
// 추상 메소드 이외에도 다른 필드와 메소드를 추가할 수 있다.


class MyClass extends AbstractClass{
         @Override
         public void abstractMethod() {
                  System.out.println("Abstract Method() 호출");
         }

         public void MyClassMethod() {
                  System.out.println("MyClass Method 호출");
         }

}

class  YouClass extends AbstractClass{
         @Override
         public void abstractMethod() {
                  System.out.println("YouClass abstractMethod() 호출");
         }
}