*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 | 클래스 | 클래스 내에 추상메서드가 선언되어 있음을 의미 한다. |
메서드 | 선언부만 작성하고 구현부는 작성하지 않는 추상 메서드임을 알린다. |
댓글