티스토리 뷰

반응형

 

 

해커랭크 Day 19 챌린지를 시작해보자. 😆

 

오늘은 interface에 대해 학습했다.

 

interface는 추상 메서드의 집합으로

인터페이스에 대해 잘 모르는 독자들은

다음의 링크를 참고하길 바란다.

링크1

 

[자바의 정석] Ch 7-31 추상 클래스(abstract class)란? Ch 7-34 추상클래스의 작성법은? Ch 7-35 인터페이스

🤔 추상 클래스(abstaract class)란? ✔ 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 ✔ 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 ✔ 미완성 메서드. 구현부(몸통, {})이 없

dandev.tistory.com

링크2

 

[자바의 정석] Ch 7-38 인터페이스를 이용한 다형성이란? 인터페이스의 장점은? Ch 7-40 디폴트 메서

🤔 인터페이스를 이용한 다형성이란? ✔ 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능 ⭐⭐⭐ ✔ 인터페이스를 메서드의 리턴타입으로 지정할 수 있다. abstract class Unit

dandev.tistory.com

 

 

 

필자의 '자바의 정석' 포스팅인데

저 글을 읽고도 이해가 되지 않는다면

해당하는 '자바의 정석' 강의를 듣고 문제를 푸는 것을 추천한다!

 

그럼 이제 강의 소스부터 확인해보자.

 


 

Character.java

public interface Character {
    public String base = "character";
    public void attack();
    public void heal();
    public String getWeapon();
}

 

 

Enemy.java

public class Enemy implements Character {

    public String weapon = "lightsaber";

    public Enemy() {

    }

    @Override
    public String getWeapon() {
        return weapon;
    }

    public void attack() {
        System.out.println("The enemy attacks YOU!");
    }

    @Override
    public void heal() {
        System.out.println("The enemy heals himself");
    }

    public void weaponDraw() {
        System.out.println("draw out weapon");
    }
}

 

 

Hero.java

public class Hero implements Character {
    public String weapon = "The Force";

    @Override
    public void attack() {
        System.out.println("The hero attacks the enemy");
    }

    @Override
    public void heal() {
        System.out.println("The hero heals you");
    }

    @Override
    public String getWeapon() {
        return weapon;
    }
}

 

 

StarWarsInterfacePractice.java


import java.util.Random;

public class StarWarsInterfacePractice {
    public static Character summonCharacter() {
        Random random = new Random();
        if(Math.abs(random.nextInt()) % 2 == 0) {
            return new Enemy();
        }else {
            return new Hero();
        }
    }

    public static void main(String[] args) {
        Enemy darthVader = new Enemy();
        Hero ObiWanKenobi = new Hero();
        darthVader.attack();
        ObiWanKenobi.attack();
        darthVader.heal();
        ObiWanKenobi.heal();
        System.out.println("Enemy weapon : " + darthVader.getWeapon());
        System.out.println("Hero weapon : " + ObiWanKenobi.getWeapon());
        Character spy = summonCharacter();
        spy.attack();
        spy.heal();

    }
}

 

 


 

 

예제가 StarWars에 관한 내용이긴하지만

StarWars를 잘 모르는 필자도

쉽게 이해했으므로

이해하는데게 큰 어려움은 없을 것이다.

 

만약 궁금한 것이 있다면

댓글로 질문하길 바란다.

 

 

 


 

그럼 우리는 문제 리뷰에서 다시 만나자. 😊

반응형