Ms'Note

Abstract 본문

IT/└▶Example Coding.JAVA

Abstract

Jelly_B 2020. 8. 24. 17:48

Unit 클래스를 추상 클래스 형태로 정의

  • 이 클래스를 통한 객체는 생성할 수 없고, 반드시 상속의 형태로만 사용되어야 한다.
    추상화 되었기 때문에 추상 메서드를 포함할 수 있다.
public abstract class Unit {
    private String name;
    
    public Unit(String name) {
        super();
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    // 자식들이 재정의할 메서드를 추상으로 명시한다.
    public abstract void attack();
    
    public abstract void move();
}

 

 

 

 

 

 

추상 메서드의 상속

  • 육군을 표현하기 위한 Army 클래스를 정의하고 Unit을 상속받는다.
public class Army extends Unit {
    public Army(String name) {
        super(name);
    }
    
    @Override
    public void attack() {
        System.out.println(this.getName() + ">> 육상공격");
    }
    
    @Override
    public void move() {
        System.out.println(this.getName() + ">> 육상이동");
    }
}

 

 

 

 

 

 

해군(Navy)클래스의 구현

  • Army 클래스와 동일한 과정을 거쳐서 구현한다.
public class Navy extends Unit {
    public Navy(String name) {
        super(name);
    }
    
    @Override
    public void attack() {
        System.out.println(this.getName() + ">> 해상공격");
    }
    
    @Override
    public void move() {
        System.out.println(this.getName() + ">> 해상이동");
    }
}

 

 

 

 

 

 

공군(AirForce)클래스의 구현

  • 앞의 클래스들과 동일한 과정을 거쳐서 구현한다.
public class AirForce extends Unit {
    public AirForce(String name) {
        super(name);
    }
    
    @Override 
    public void attack() {
        System.out.println(this.getName() + ">> 공중공격");
    }
    
    @Override
    public void move() {
        System.out.println(this.getName() + ">> 공중이동");
    }
}

 

 

 

 

 

 

Main01

  • 육/해/공군의 클래스의 기능을 활용한 프로그램 만들기
public class Main01 {
    public static void main(String[] args) {
        Army army = new Army("육군");
        Navy navy = new Navy("해군");
        AirForce air = new AirForce("공군");
        
        // 다형성이란, 객체의 이름이 서로 다르더라도
        // 객체의 메서드를 호출할 때 고민하지 않기 위한 기법이다.
        // 추상화는 다형성을 강제하는 것으로 
        // 객체를 사용하는 개발자의 편의를 위한 클래스 작성 규칙이다.
        
        army.move();
        army.attack();
        
        navy.move();
        navy.attack();
        
        air.move();
        air.attack();
    }
}

 

 

출력 결과

 

'IT > └▶Example Coding.JAVA' 카테고리의 다른 글

static-1  (0) 2020.08.25
Interface  (0) 2020.08.25
Boxing-2  (0) 2020.08.23
Boxing-1  (0) 2020.08.23
Overload-2  (0) 2020.08.23
Comments