[JAVA개념공부]has-a 관계, Generic타입

2021. 5. 27. 18:23컴퓨터과학

728x90
반응형

has-a관계

클래스간의 관계에 따라 has-a관계로, 혹은 is-a관계로 구현할 수 있다. 

has-a 관계 circle.classpoint.class의 관계.
- 원은 점을 갖는다.(O)
- 원은 점과 같다.(X)
is-a관계 dog.classanimal.class의 관계.
개는 동물이다.(O)
개는 동물을 갖는다(X)

 

 

- has-a관계의 구현 : A클래스를 갖는 B클래스라면, B클래스 내부에 B클래스를 포함시킨다.

class Point {
	int x;
	int y;
}

class Circle {
	Point p; // has-a관계
	int r;

	public Circle(Point p, int r) {
		super();
		this.p = p;
		this.r = r;
	}

}

 

cf) is-a관계 개념

https://leesteady.tistory.com/33

 

 

 

Generic 타입

필드의 데이터 타입을 객체 생성시 유동적으로 설정할 수 있는 타입. 클래스에서 사용할 타입을 클래스 외부에서 설정하게 된다.

 

- Generic 필드 선언시 데이터 타입 자리에 임의의 변수명을 설정한다.

- Generic필드가 선언된 클래스, 사용하는 클래스는 클래스명 뒤에 <데이터 타입, ...>을 붙여야 한다.

public class test<P, T> { // Generic타입 선언 위해 클래스에 <>를 붙여야함.
	public static void main(String[] args) {
		GenericExample<Integer, String> GE = new GenericExample<Integer, String>(29, "이지은");
		System.out.println(GE);
	}

}

class GenericExample<P, T> { // Generic타입 선언 위해 클래스에 <>를 붙여야함.
	P age; // Generic 타입 필드 선언
	T name; // Generic 타입 필드 선언

	public GenericExample(P age, T name) {
		this.age = age;
		this.name = name;
	}

	@Override
	public String toString() {
		return "GenericExample [age=" + age + ", name=" + name + "]";
	}

}

 

코드 실행 결과

728x90
반응형