반응형

[쉽게 배우는 자바 프로그래밍] 

        Chapter 07. 추상 클래스와 인터페이스

            프로그래밍 문제

 

7. 다음과 같이 Human 인터페이스와 Human 구현 클래스인 Worker가 있다.

 

1
2
3
4
5
6
7
8
9
interface Human {
    void eat();
}
 
class Worker implements Human {
    public void eat() {
        System.out.println("빵을 먹습니다.");
    }
}

 

Worker 클래스는 이미 다른 프로젝트에서 사용 중이다. 그런데 Human 인터페이스를 구현한 Student 클래스에는 print() 메서드가 필요하다. 또 Human 타입으로 사용할 때도 echo() 메서드가 필요하다. 따라서 다음과 같은 테스트 프로그램을 실행하고자 한다. Human 인터페이스, Worker 클래스에 수정할 부분이 있으면 수정하고, Student 클래스도 작성하시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class HumanTest {
    public static void main(String[] args) {
        Human.echo();
 
        Student s = new Student(20);
        s.print();
        s.eat();
 
        Person p = new Person();
        p.print();
        p.eat();
    }
}

 

야호!!!
학생입니다.
도시락을 먹습니다.
인간입니다.
빵을 먹습니다.

 


        [ Human.java ]

1
2
3
4
5
6
7
8
9
10
public interface Human {
    
    void eat();
    void print();
    
    static void echo() {
        System.out.println("야호!!!");
    }
 
}

 

 

        [ Student.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Student implements Human {
 
    int i;
 
    Student() {
 
    }
 
    public Student(int i) {
        this.i = i;
    }
 
    @Override
    public void eat() {
        System.out.println("도시락을 먹습니다.");
    }
 
    @Override
    public void print() {
        System.out.println("학생입니다.");
    }
 
}

 

 

        [ Worker.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Worker implements Human {
 
    @Override
    public void eat() {
        System.out.println("빵을 먹습니다.");
    }
 
    @Override
    public void print() {
        System.out.println("인간입니다.");
    }
 
}

 

 

        [ HumanTest.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class HumanTest {
 
    public static void main(String[] args) {
 
        Human.echo();
 
        Student s = new Student(20);
        s.print();
        s.eat();
 
        Worker w = new Worker();
        w.print();
        w.eat();
 
    }
 
}

 

 

반응형