* 상속

   - 두 클래스를 조상과 자손으로 관계를 맺어주는 것

   - 공통 부분은 조상에서 관리하고 개별부분은 자손에서 관리

   - 상속은 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

+ Recent posts