@Override를 하는 이유컴파일러가 애노테이션을 보고 메서드가 정확히 오버라이드 되었는지 확인한다. 오버라이딩 조건을 만족시키지 않으면 컴파일 에러를 발생시킨다.실수로 오버라이딩을 못하는 경우를 방지해준다.필수는 아니지만 코드의 명확성을 위해 붙여주는 것이 좋다. 어노테이션 어노테이션 타입 정의와 적용public @interface AnnotationName {} // 이렇게 작성 후@AnnotationName 형식으로 활용함public @interface AnnotationName { String prop1(); int prop2() default 1;}@AnnotationName(prop1 = "값") @AnnotationName(prop1 = "값", prop2 = "값") 어노테이션..
프로그래밍/JAVA
생성자는 반드시 호출되어야 한다.생성자가 없으면 기본 생성자가 제공된다.그렇지 않으면 모든 클래스에 개발자가 직접 정의해야함 생성자가 하나라도 있으면 기본 생성자가 제공되지 않는다. 이 경우 개발자가 정의한 생성자를 직접 호출해야 한다 this() 규칙this() 는 생성자 코드의 첫줄에만 작성할 수 있다.
접근 제어자의 종류private : 모든 외부 호출을 막는다.default (package-private) : 같은 패키지안에서 호출은 허용한다.protected : 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.public : 모든 외부 호출을 허용한다.차단(많음) private -> default -> protected -> public 차단(적음) package-private접근 제어자를 명시하지 않으면 같은 패키지 안에서 호출을 허용하는 default 접근 제어자가 적용된다.실제로는 package-private 이 더 정확한 표현이다. 클래스 레벨의 접근 제어자 규칙public , default 만 사용 가능.public 클래스는 반드시 파일명과 이름이 같아야 한..
데이터를 숨겨라객체 - 속성(데이터) /기능(메서드)캡슐화에서 가장 필수로 숨겨야 하는 것은 속성(데이터)내부 데이터까지 직접 사용할 필요가 없고 조작하게 해서도 안된다. 기능 숨기기 - 객체에서 내부에서만 사용하는 기능은 모두 감추는 것이 좋다.즉, 데이터는 모두 숨기고, 기능은 꼭 필요한 기능만 노출하는 것이 캡슐화이다