JAVA

· JAVA
final 키워드 대상의 변경이 불가능하도록(변경의 최종) 지정 변수에 final이 붙을 경우 => 변수 값 변경 불가 = 저장되어 있는 값만 사용 가능 = 상수로 취급됨 => 일반 변수와 구별하기 위해 이름을 보통 대문자로 사용하며, 단어와 단어 사이의 구분은 언더스코어(_)를 사용함 ex) MAX_NUM => 반드시 초기화 필수! 단, 초기화를 수행하지 않는 상수를 blank final 상수라고 하며 생성자를 통해 초기화하면 사용 가능함 => 목적 : 객체마다 다른 상수 값을 갖기 위함 메서드에 final이 붙을 경우 => 메서드 변경 불가 = 오버라이딩 금지! 클래스에 final이 붙을 경우 => 클래스 변경 불가 = 상속 금지! // final 변수의 대표적인 예 : Math 클래스의 PI상수 S..
· JAVA
상속에서의 상속자 생성자는 상속되지 않음 => 생성자 이름은 자신의 클래스 이름과 동일한데 만약, 상속받을 경우 생성자 이름이 부모 클래스이므로 생성자 작성 규칙에 위배됨 서브클래스의 인스턴스를 생성할 때는 자동으로 슈퍼클래스의인스턴스를 먼저 생성한 후 서브클래스의 인스턴스가 생성됨 => 이때, 서브클래스 생성자에서 슈퍼클래스 기본생성자를 자동 호출 => 만약, 슈퍼클래스에 파라미터 생성자만 존재할 경우 서브클래스 생성자에서 컴파일 에러가 발생하게 된다! 생성자 super() 슈퍼클래스의 생성자를 명시적으로 호출할 때 사용 => 생성자 this()와 사용방법 및 목적은 동일함 기본 문법 : super([데이터..]); 목적1) 슈퍼클래스 생성자 중 특정 생성자를 명시적으로 호출할 경우 ex) 슈퍼클래스에..
· JAVA
접근제한자 : 멤버에 대한 접근 범위를 제한하는 키워드 (넓은) public > protected > default > private (좁음) public 모든 패키지의 모든 클래스에서 접근 가능 (=누구나) protected 같은 패키지이거나 다른 패키지의 서브클래스에서 접근 가능 default 같은 패키지에서만 접근 가능 (=다른 패키지에서 접근 불가) private 자신의 클래스에서만 접근 가능(=다른 클래스에서 접근 불가) [ParentClass.java] // 접근제한자에 따른 접근 범위 차이 public int publicVar; protected int protectedVar; int defaultVar; private int privateVar; public void useMember() ..
· JAVA
메서드 오버라이딩(Method Overriding) = 메서드 재정의 슈퍼클래스로부터 상속받은 메서드를 서브클래스에서 재정의 하는 것 기본 슈퍼클래스의 메서드와 동일하게 생긴 메서드를 정의하게 되므로 서브클래스에서는 더 이상 슈퍼클래스의 메서드가 보이지 않음 => 슈퍼클래스의 메서드를 덮어쓰기 때문에 자신의 메서드만 보이게 됨 (= 슈퍼클래스의 메서드는 은닉됨) 슈퍼클래스의 메서드에 새로운 기능을 추가하는 경우 기존에 상속된 메서드 내용을 변경하는 경우 오버라이딩 규칙 상속 관계 필수! 메서드 시그니처(메서드명, 파라미터)가 일치해야함 => 단, 리턴타입은 부모와 같거나 서브클래스 타입으로 변경 가능 접근제한자는 같거나 넓은 범위로만 변경 가능(= 좁아질 수 없다!) (넓은) public > protec..
· JAVA
상속에서의 생성자 생성자 : 클래스명과 이름이 같고 리턴타입이 없는 메서드의 일종 생성자는 상속되지 않음 => 상속받을 경우 자신의 클래스 이름과 생성자 일므이 다르기 때문에 생성자 정의 규칙을 위반하게 됨 상속 관계에서 인스턴스를 생성할 때 서브 클래스의 인스턴스가 생성되기 전 슈퍼클래스의 인스턴스를 먼저 생성한 후 서브클래스의 인스턴스를 생성함 => 서브클래스의 생성자가 호출되면 가장 먼저 슈퍼클래스의 생성자를 호출하여 슈퍼클래스의 인스턴스를 생성하고 그 후에 서브클래스의 인스턴스가 생성되어 생성자 코드가 실행됨 class Employee4 { // =class Employee4 extends Object String name; int salary; // 파라미터 생성자 단축키 : alt shift ..
· JAVA
has-a 관계(포함) vs is-a 관계(상속) has-a 관계(포함) A has a B = A가 B를 포함한다로 표현 가능한 고나계 가장 일반적인 객체간의 관계 특정 클래스 내에서 다른 클래스의 인스턴스를 생성하여 해당 인스턴스를 다루는 관계 예) 자동차-엔진, 스마트폰-카메라 is-a 관계(상속) A is a B = A는 B이다.로 표현 가능한 관계 특정 클래스가 다른 클래스를 상속받아 해당 클래스의 멤버를 선언없이 다루는 관계 예) 자동차 - 소방차, 핸드폰 - 스마트폰 자동차(Car)와 엔진(Engine)의 관계는? has-a(포함) 관계이다. => 자동차는 엔진을 포함한다. = Car has a Engine class Car { // 포함관계일 경우 해당 클래스의 인스턴스를 통해 접근 가능한 ..
· JAVA
is-a 관계가 성립하는 객체간의 관계 슈퍼클래스(부모)의 모든 멤버를 서브클래스(자식)에게 물려받아 선언없이 사용하는 것 슈퍼클래스(Super Class) = 부모 클래스 = 상위클래스 = 조상클래스 서브클래스(Sub Class) = 자식 클래스 = 하위클래스 = 자손클래스 private 접근제한자 지정된 멤버는 상속 대상에서 제외됨 생성자는 상속 대상에서 제외됨 => 생성자의 이름은 자신의 클래스 이어야만 함 상속받은 생성자는 부모의 클래스 이름이므로 규칙에 위배되기 때문 자바는 단일 상속만 지원함 => 두 개 이상의 슈퍼클래스(부모)를 지정할 수 없음 별도로 상속 대상을 지정하지 않을 경우(extends 생략할 경우) java.lang.Object 클래스를 자동으로 상속받음 ⇒ java.lang.O..
· JAVA
싱글톤 디자인 패턴(Singleton Design pattern) 단 하나의 유일한 인스턴스만을 생성하여 공유하도록 하는 기법 외부에서 인스턴스 생성을 하지 못하도록 차단하고 클래스 내에서 직접 인스턴스를 생성 후 외부로 리턴하는 기법 누구나 단 하나의 인스턴스만을 공유하여 사용해야함 ( => 즉, 외부에서 new를 통한 새 인스턴스 생성 불가능!) 패턴규칙 외부에서 인스턴스 생성이 불가능하도록 생성자에 private 접근제한자를 선언하여 정의 자신의 클래스에서 직접 인스턴스를 생성하여 참조변수에 저장 => 외부에서 인스턴스 생성 없이도 접근할 수 있도록 static 키워드 사용 => 외부에서 함부로 접근하지 못하도록 private 접근제한자 선언 생성된 인스턴스를 외부로 리턴하는 Getter 메서드 정..
ઇ땅코니ଓ
'JAVA' 카테고리의 글 목록 (7 Page)