자바 - abstract ( 추상 )

빵제이·2023년 7월 26일
0

자바

목록 보기
26/37

[ 추상 클래스 ]

[추상 : 형태가 없는 것]

(강아지는 형태가 있으니 추상x, 동물은 추상)

    1. 추상 메소드를 1개 이상 가지고 있는 클래스이다.
      (추상 메소드가 하나라도 생기면, 클래스도 추상 클래스가 된다.)
    1. abstract 키워드를 추가한다.
    1. ★ 추상 클래스는 객체를 생성할 수 없다.
  •  (미완성 된 클래스이기 때문이다. = 본문이 없는 메소드가 있기 때문에 미완성 클래스.)
    1. ★ 추상 클래스의 서브 클래스는 "반드시" 추상 메소드를 오버라이드 해야 한다.
  •  (추상 메소드만 오버라이드 하면 된다.)

[ 사람 클래스 ]

public abstract class Person {

  public void eat() {
    System.out.println("냠냠");
  }
  
  public void sleep() {
    System.out.println("쿨쿨");
  }
  
  // 호출을 위해서 생성한 study 메소드
  // 본문이 필요 없기 때문에 본문이 없는 메소드로 만들 수 있다.
  // 본문이 없는 메소드를 "추상 메소드"라고 한다.
  // abstract 키워드를 추가하고 본문({})을 제거한다.
  public abstract void study();
  
}

[ 학생 클래스 ]

public class Student extends Person {
  
  public void study() {
    System.out.println("공부");
  }
  
}

[ 메인 메소드 ]

public class MainWrapper {

  public static void main(String[] args) {
    
	// 추상 클래스 Person은 객체를 생성할 수 없다.
    // Person p1 = new Person();  --> 불가능함.
    p1.eat();
    p1.sleep();
    
	Person p2 = new Student();
    p2.eat();
    p2.sleep();
    // study 메소드를 만들었지만, Person타입이기에 Person메소드만 호출 가능.
    // Person 에 빈 study 메소드를 만들어줘서 오버라이드 함.
  }

}
profile
개인 아카이브

0개의 댓글