본문 바로가기

JAVA27

14. 상속과 포함 클래스의 관계에는 상속과 포함이 있다. 상속 자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화 블럭은 상속받을 수 없다.) 자손의 멤버 개수는 조상보다 적을 수가 없다. 포함 클래스의 멤버로 참조변수를 선언하는 것이다. 적은 단위의 클래스를 만들고, 이들을 조합하여 클래스를 만든다. 클래스 간의 관계(상속과 포함) 결정? 상속관계: ~은 ~이다 (is-a) 포함관계: ~은 ~을 가지고 있다. (has-a) 아래 코드를 통해 상속관계와 포함관계의 구조적인 차이를 확인할 수 있다. 아래의 예제같은 경우에는 '원은 점을 가지고 있다' 와 같은 has-A관계가 더 적합하므로 포함관계가 더 적절한 사용예시라고 볼 수 있다. 상속관계 Ex class Point { int x; int y; } class Cir.. 2022. 10. 2.
13. 멤버변수의 초기화 멤버변수를 초기화 하는 방법은 크게 3가지로 나뉜다. 명시적 초기화 간단 초기화의 경우 사용. 기본형 변수의 초기화 int door = 4; 참조형 변수의 초기화 Engine e = new Engine(); 초기화 블럭 주로 복잡한 클래스 변수 초기화 하는데 사용 인스턴스변수 초기화 블럭: { }. -> 사용 잘 x 클랙스변수 초기화 블럭 : static { } 생성자 복잡한 초기화를 하는 경우 사용 인스턴스 변수를 초기화 하는데 사용된다. public class VariableInitalize { public static void main(String[] args) { // static 변수(클래스변수)의 초기화 테스트 System.out.println(Arrays.toString(StaticBlock.. 2022. 9. 25.
12. this()와 this this()와 this 생성자 this()와 참조변수 this는 완전히 다른 것이다. 생성자 this() this(), this(매개변수)는 생성자로, 생성자에서 같은 클래스에 있는 다른 생성자를 호출할 때 사용된다. 다른 생성자 호출 시, 생성자 내 첫 줄에서만 사용 가능하다. class Car2 { String color; String gearType; int door; Car2() { color = "white"; gearType = "auto"; door = 4; } Car2(String c, String g, int d){ color = c; gearType = g; door = d; } } 위 코드에서 기본생성자와, 매개변수가 있는 생성자 두 개를 선언했다. 사실 두 생성자는 동일한 기능을 하.. 2022. 9. 24.
12. 생성자, 기본 생성자 생성자 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드 이다. 즉, 인스턴스 생성시 인스턴스 변수들을 초기화 해주는 것이다. 생성자의 규칙 이름이 클래스 이름과 동일해야 한다. 리턴 값이 없다. (void를 붙이지 않음.) 모든 클래스는 반드시 한 개이상의 생성자를 가져야 한다. 생성자를 명시하지 않은 메서드의 경우 기본 생성자를 가진다. 기본 생성자 매개변수가 없는 생성자 생성자가 하나도 없을 때만, 컴파일러가 자동으로 추가한다. 컴파일러가 자동으로 추가하지만, 기본 생성자를 직접 작성 해주는 것이 좋다. 생성자 오버로딩을 통해, 다양한 생성자를 선언한 경우에는 기본 생성자를 명시하지 않으면 에러가 발생한다. public class ConstrutorEx { public static void .. 2022. 9. 24.