20.12.31-28일차
💍 생성자(constructor)
- 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
- 인스턴스 생성시 수행할 작업(iv 초기화)에 사용
- 이름이 클래스의 이름과 같아야 함
- 리턴값이 없음(void 안붙임)
- 모든 클래스는 반드시 생성자를 가져야함
💍 기본 생성자(default constructor)
- 매개변수가 없는 생성자
- 생성자가 하나도 없을 때만, 컴파일러가 자동 추가
💍 생성자 this()
- 생성자에서 다른 생성자 호출할 때 사용
- 다른 생성자 호출시 첫 줄에서만 사용가능
💍 참조변수 this
- 인스턴스 자신을 가리키는 참조변수
- 인스턴스 메서드(생성자 포함) 사용가능
- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
- 생성자 this()와는 연관 없음
💍 변수의 초기화
- 지역변수(lv)는 수동 초기화(우리가 직접) 해야함(사용전 꼭★)
- 멤버변수(iv, cv)는 자동 초기화된다.
class InitTest { int x; // 인스턴스 변수 int y = x; // 인스턴스 변수 void method1() { int i; // 지역변수 int j = i; // 에러. 지역변수를 초기화하지 않고 사용 } }
💍 멤버변수의 초기화
- 명시적 초기화( = 대입연산자(선언시))
class Car { int door = 4; // 기본형 변수의 초기화 Engine e = new Engine(); // 참조형 변수의 초기화 }
- 초기화 블럭( 복잡한 초기화에 사용)
- 인스턴스 초기화 블럭 : { } (거의 안씀)
- 클래스 초기화 블럭 : static { }
- 생성자( iv초기화, 복잡한 초기화)
💎 cv, iv 초기화
- 자동 초기화
- 간단 초기화 -> = (대입연산자)
- 복잡 초기화
- cv -> static { }
- iv -> 생성자
💍 상속(Inheritance)
- 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것.
- 자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)
- 자손의 멤버 개수는 조상보다 적을 수 없다(같거나 많다.)
- 자손의 변경은 조상에 영향을 미치지 않는다.
class 자식클래스 extends 부모클래스 { // ... }
💍 포함(composite) 관계
- 클래스의 멤버로 참조변수를 선언하는 것
- 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다.
💍 클래스 간의 관계 결정하기
👉상속관계 '~은 ~이다. (is - a)'
👉포함관계 '은 ~을 가지고 있다.(has - a)'
(대부분 포함을 많이 쓴다. 상속은 제약이 많기 때문에)
💍 단일 상속(Single Inheritance)
- java는 단일상속만 허용(하나의 부모만 상속)
class TvDVD extends Tv DVD { // 에러. 조상은 하나만 허용 //... }
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
💍 Object클래스 - 모든 클래스의 조상
- 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
- 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
(toString(),equals(Object obj),hashCode(),...)class Tv extends Object { // 컴파일러가 자동추가 //... }
💎 출처
자바의 정석 📚📚으로!
Author And Source
이 문제에 관하여(20.12.31-28일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ham6482/20.12.31-28일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)