본문 바로가기
카테고리 없음

Java의 정석 7장 객체지향

by 감마 2010. 9. 23.
*this()
같은 클래스의 다른 생성자를 호출하는데 사용

*super()
조상클래스의 생성자를 호출하는데 사용.

*Object클래스를 제외한 모든 클래스의 생성자 첫줄에는 생성자(,같은 클래스의 다른 생성자 또는 조상의 생성자)를 호출해야 한다.
그렇지 않으면 컴파일러가 자동으로  super(); 를 생성자의 첫줄에 삽입한다.

*인스턴스 생성시 클래스를 선택하는 것만큼 생성자를 선택 하는것도 중요!
1. 클래스 : 어떤 클래스의 인스턴스를 생성 할것인가?
2. 생성자 : 선택한 클래스의 어떤 생성자를 이용해서 인스턴스를 생성할것인가?

문제: 에러 포인트를 잡아라.
class PointTest {
public static void main(String args[]) {
Point3D p3 = new Point3D(1,2,3);
}
}

class Point {
int x;
int y;

Point(int x, int y) {
this.x = x;
this.y = y;
}

String getLocation() {
return "x :" + x + ", y :"+ y;
}
}

class Point3D extends Point {
int z;

Point3D(int x, int y, int z) {

this.x = x;
this.y = y;
this.z = z;
}

String getLocation() { // 오버라이딩
return "x :" + x + ", y :"+ y + ", z :" + z;
}
}

Hint. 조상클래스의 멤버 변수는 조상의 생성자에 의해 초기화 되도록 해야한다.


*제어자

제어자

대상

의미

static

멤버변수

- 모든 인스턴스에 공통적으로 사요오디는 클래스 변수가 된다.

- 클래스 변수는 인스턴스를 생성하지 않고도 사용가능하다.

- 클래스가 모모리에 로드될 때 생성된다.

메서드

- 인스터스를 생성하지 않고도 호출이 가능한 static 메서드가 된다.

- static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다.

*static초기화블록은클래스가메모리에로드될때단한번만수행되며,주로클래스변수(static멤버변수)를 초기화하는데 주로 사용된다.

final

클래스

변경될수없는클래스,확장될수없는클래스가된다.

그래서final로지정된클래스는다른클래스의조상이될수없다.

메서드

변경될수없는메서드,final로지정된메서드는오버라이딩을통해재정의

될수없다.

멤버변수

변수앞에 final이 붙으면, 값을 변경 할 수 없는 상수가 된다.

지역변수

대표적인 final클래스로는 String 과 Math 가 있다.

abstract

클래스

클래스 내에 추상메서드가 선언되어 있음을 의미 한다.

메서드

선언부만 작성하고 구현부는 작성하지 않는 추상 메서드임을 알린다.



댓글