본문 바로가기
▶개발/JAVA

[JAVA] 자바 정리노트(3)

by 브라더 준 2018. 12. 19.

[JAVA] 자바 정리노트(3)



1. 모든 클래스는 하나 이상의 생성자가 꼭 정의되어야 한다. 생성자를 정의하지 않을 경우 컴파일러가 기본 생성자를 제공한다.


2. 상속과 포함관계의 구분은 A는 B이다(상속), A는 B를 갖고 있다(포함)으로 구별할 수 있다.


3. 한 소스파일에는 단 한번의 패키지 선언만을 허용한다.


4. 변수의 초기화 단계는 "기본값->명시적초기화->초기화블럭->생성자(생성자는 인스턴스 변수 초기화에만 해당" 순이다.

(http://markim94.tistory.com/138 자세한 초기화 단계의 내용은 게시물 참고)


5. 하나의 소스파일에는 public클래스가 하나만 존재해야 하며 소스이름은 public 클래스 이름과 반드시 같아야 한다.


6. 생성자의 접근제어자를 사용하여 인스턴스 생성을 제한할 수 있다. 대개의 경우 생성자의 접근 제어자는 클래스의 접근 제어자와 같다. 다르게 지정할 수도 있다.


7. 생성자가 private인 클래스는 다른 클래스의 조상이 될 수 없다. 이럴 경우 클래스 앞에 final을 추가하여 상속할 수 없는 클래스라고 표기한다.


8. 자식타입에서 부모타입으로 형변환은 생략이 가능하다. 그러나 부모타입에서 자식타입으로의 형변환은 생략이 불가하다. (코드 예제에서는 이전의 상속과정은 생략)

Car c = null;  // 부모

OpenCar oc = new OpenCar(); // 자식

c = oc; // 자식타입->부모타입(upcasting-형변환생략가능)

oc = (OpenCar)c; // 부모타입->자식타입(downcasting-형변환생략불가)


9. 참조변수가 참조하고 있는 실제 인스턴스의 타입을 알기 위해서 instanceof 연산자를 사용하다. instanceof연산자에서 true값을 내놓을 경우 해당 타입으로 형변환이 가능하다.


10. 인터페이스의 모든 멤버변수는 public static final이어야 하며, 메서드는 public abstract이다. 이는 생략이 가능하며, 컴파일러가 자동으로 삽입한다. (다만, default메소드와 static메소드는 예외이다. 디폴트메소드는 인터페이스 구현(상속)시 디폴트메소드를 추가로 작성하지 않아도 된다.)





반응형