반응형

7.8>다음은 String만 다루는 MyClass 코드이다. MyClass를 제네릭 클래스 MyClass<E>로 일반화하고, 이를 이용하는 main() 메소드를 만들어 프로그램을 완성하라.


public class MyClass {

      private String s;

      public MyClass(String s) {

            this.s = s;

      }

      void setS(String s) {

            this.s = s;

      }

      String getS() {

            return s;

      }

}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package SecondHW;
class MyClass<E> {  //제네릭 클래스 MyClass 타입 매개 변수는 E, 설정하는 것에 따라 자유자재로 바뀜
    private E e; //private 형이라서 Myclass내 접근이 아니면 변경 불가한 E형 변수 e
    public MyClass(E e) { //생성자 ,매개변수를 객체 e 에 대입
        this.e = e;
    }
    void setS(E e) { //e를 정해주는 setS메소드 매개변수 e를 객체의 e에 대입 디폴트형
        this.e = e;
    }
    E getS() {  //객체의 e를 반환해주는 getS메소드 디폴트형
        return e;
    } //제네릭은 클래스와 인터페이스에만 적용되므로 자바 기본 타입은 사용 불가능
}
public class GenericPractice {
    public static void main(String[] args) {
        MyClass<Integer> i = new MyClass<Integer>(1); //정수형 MyClass i 래퍼 클래스 사용 
        MyClass<Double> d = new MyClass<Double>(2.7); //실수형 MyClass d 래퍼 클래스 사용
        MyClass<String> s = new MyClass<String>("For the Horde"); //문자열형 Myclass s
        System.out.println(i.getS()); //getS함수를 통해 리턴된 값 출력
        System.out.println(d.getS());
        System.out.println(s.getS());
        i.setS(3); //i의 e를 3으로 set
        d.setS(3.14); //d의 e를 3.14으로 set
        s.setS("탕수육소스다");//s의 e를 "탕수육소스다"로 set
        System.out.println(i.getS());
        System.out.println(d.getS());
        System.out.println(s.getS()); //출력
    }}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

학생 정보  (0) 2017.06.19
학점 계산  (0) 2017.06.19
가장 큰 수  (0) 2017.06.19
겜블링 게임  (0) 2017.06.19
가위바위보  (0) 2017.06.19

+ Recent posts