본문 바로가기

Hello World!!/Java

final final 클래스 - 상속받을 수 없음을 지정 final class FinalClass { ..... } class DerivedClass extends FinalClass { // 컴파일 오류 발생 ..... } final 메소드 - 오버라이딩할 수 없음을 지정 public class SuperClass { pretected final int finalMethod() { ... } } class DerivedClass extends SuperClass { // DerivedClass가 SuperClass를 상속 받음 protected int finalMethod() { ... } // 컴파일 오류, 오버라이딩 할 수 없음 } final 필드, 상수 정의 - 상수를 정의할 때 사용
static 메소드의 제약 조건 - static 메소드는 오직 static 멤버만 접근할 수 있다. class StaticMethod { int n; void f1(int x) { n = x; } //정상 void f2(int x) { m = x; } //정상 static int m; static void s1(int x) { n = x; } //컴파일 오류. static 메소드는 non-static 필드 사용 불가 static void s2(int x) { f1(3); } //컴파일 오류. static 메소드는 non-static 메소드 사용 불가 static void s3(int x) { m = x; } // 정상 static void s4(int x) { s3(3); } // 정상 } - static 메소드에서는 this 키워드를..
static 멤버와 non-static 멤버의 차이 non-static 멤버 static 멤버 선언 class Sample { int n; void g() {...}} class Sample { static int m; static void g() {...}} 공간적 특성 멤버는 객체마다 별도 존재 - 인스턴스 멤버라고 부름 멤버는 클래스당 하나 생성 - 멤버는 객체 내부가 아닌 별도의 공간에 생성 - 클래스 멤버라고 부름 시간적 특성 객체 생성 시에 멤버 생성 됨 - 객체가 생길 때 멤버도 생성 - 객체 생성 후 멤버 사용 가능 - 객체가 사라지면 멤버도 사라짐 클래스 로딩 시에 멤버 생성 - 객체가 생기기 전에 이미 생성 - 객체가 생기기 전에도 사용 가능 - 객체가 사라져도 멤버는 사라지지 않음 - 멤버는 프로그램이 종료될 때 사라짐 공유의 특성 공..
메소드 오버로딩 조건 - 메소드 이름이 동일하여야 한다.- 메소드 인자의 개수가 서로 다르거나, 메소드 인자의 타입이 서로 달라야 한다.- 메소드의 이름이 같고 인자의 개수나 타입이 모두 같은데 메소드의 리턴 타입이 다르면 메소드 오버로딩이 성립되지 않으며 컴파일 오류가 발생한다. 오버로딩 성공 사례public class MethodOverloading { public int getSum(int i, int j){ return i + j; } public int getSum(int i, int j, int k) { return i + j + k; } } 오버로딩 실패 사례public class MethodOverloading { public int getSum(int i, int j){ return i + j; } publi..
접근 지정자 public - 클래스 내부/외부에서 모두 호출 가능 private - 클래스 내부 멤버들만 호출 가능 protected - 클래스 내부 메소드들은 호출 가능하며, 다른 클래스 중 상속받은 서브 클래스만 호출 가능 default - 동일한 패키지 내의 모든 클래스가 호출 가능