티스토리 뷰

간단 설명

미완성(abstract) 클래스-> 미완성(abstract method)를 갖고있는 클래스

(일반 클래스와 차이: 추상메서드 유뮤, 쓰임은 일반 클래스 다르지 않다) 

 

미완성 (abstract)메서드- 몸통(  { }  )이 없는 메서드 

abstract 리턴타입 메서드명();

 

사진(1)
사진(2)

-추상클래스는 다른 클래스 작성에 도움을 주기위한것, 직접 인스턴스 생성불가

-상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능

사진(3)

상속받고 추상메서드를 모두 구현하지않을시: 오류발생

사진(4)

해결방안 1: abstract class 만들어준다.

해결방안 2: 상속받은 추상메서드들을 모두 구현해준다. 사진(3) 처럼

사진(5)


추상클래스의 작성 

-여러 클래스에 공통적으로 사용될수 있는 추상클래스를 바로 작성

-기존 클래스의 공통 부분을 뽑아서 추상 클래스를 만든다.

 

 

-추상화된 코드는 구체화된 코드보다 유연하다(변경에 유리하다)

 

 

package year2301_11;

public class Ex7_10 {
  public static void main(String[] args) {
    Unit[] group= {new Marien(), new Tank(), new DropShip()};  //다형성 + 객체배열
    for (int i=0;i< group.length;i++){  // 모든 유닛 100, 200 으로 전체 이동
      group[i].move(100,200);
    }
  }
}


abstract class Unit {
  int x,y;
  abstract void move(int x, int y);
  void stop(){/*현재 위치에 정지 */}
}
class Marien extends Unit {

  @Override
  void move(int x, int y) {
    System.out.println("Marine x="+x+",y="+y);

  }
  void Run() {/*달리기*/}
}

class Tank extends Unit {

  @Override
  void move(int x, int y) {
    System.out.println("Tank x="+x+",y="+y);
  }
  void changMode() { /* 공격모드로 전환*/}

}

class DropShip extends Unit {

  @Override
  void move(int x, int y) {
    System.out.println("DropShip x="+x+",y="+y);

  }
  void load() { /* 선택된 대상을 태운다 */}
}

 


참고문헌 :남궁성, 『자바의정석』, 도우출판

 

'TIL > JAVA' 카테고리의 다른 글

객체지향(OOP)인터페이스  (0) 2023.01.12
예외처리(Exception)  (0) 2023.01.11
객체지향(OOP)제어자  (0) 2023.01.11
객체지향(OOP)다형성  (0) 2023.01.09
객체지향(OOP)상속  (0) 2023.01.06