* 상속
- 두 클래스를 조상과 자손으로 관계를 맺어주는 것
- 공통 부분은 조상에서 관리하고 개별부분은 자손에서 관리
- 상속은 1:1 로만 이루어진다
- C 는 조상이 여러명일수 있으나, JAVA 는 조상이 한명
* 포함
- 한 클래스의 멤버변수로 다른 클래스를 선언
- 작은 단위의 클래스를 먼저 만들고 , 이 둘을 조합해서 하나의 커다란 클래스를 만듬
* 상속 vs 포함
- 가능한 한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.
- ' is -a ' 와 ' has -a ' 를 가지고 문장을 만들어본다.
1.
class Shape {
String color = "blue";
}
class Point {
int x;
int y;
Point() {
this(0, 0);
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
class Circle extends Shape {
Point center;
int r;
Circle() {
this(new Point(0, 0), 100);
}
Circle(Point center, int r) {
this.center = center;
this.r = r;
}
}
class Triangle extends Shape {
Point []p;
Triangle(Point []p) {
this.p = p;
}
Triangle(Point p1, Point p2, Point p3) {
p = new Point []{p1, p2, p3};
}
}
class DrawMain {
public static void main(String[] args) {
Circle c1 = new Circle();
Circle c2 = new Circle(new Point(150, 150), 50);
Point []p = {new Point(100, 100), new Point(140, 50), new Point(200, 100)};
Triangle t1 = new Triangle(p);
System.out.println("c1 중점 : "+ c1.center.x +" , "+ c1.center.y);
System.out.println("c2 반지름 : "+ c2.r);
System.out.println("t1 꼭지점 : "+ t1.p[0].x +" , "+ t1.p[0].y + " / "
+ t1.p[1].x +" , "+ t1.p[1].y +" / "
+ t1.p[2].x +" , "+ t1.p[2].y);
}
}
* Object 클래스
- 모든 클래스의 최고조상
- 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다.
2.
class Test {
int a = 10;
}
class Data extends Test {
int b = 20;
void add() {
System.out.println("메서드 호출");
}
}
class Value extends Data {
int c = 30;
}
class ExtendsEx2 {
public static void main(String[] args) {
Value v = new Value();
System.out.println(v.toString());
System.out.println(v);
}
}
'Programming > Java' 카테고리의 다른 글
초기화블럭 (0) | 2011.01.22 |
---|---|
생성자 . this() . this (0) | 2011.01.17 |
메서드 오버로딩 (0) | 2011.01.17 |
클래스메서드와 인스턴스메서드 (0) | 2011.01.17 |
JVM 의 메모리구조 (0) | 2011.01.16 |