20.12.31-28일차

되자개발자·2021년 2월 20일
0

기록하기

목록 보기
28/46
post-thumbnail

💍 생성자(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;	// 에러. 지역변수를 초기화하지 않고 사용
        }
}

💍 멤버변수의 초기화

  1. 명시적 초기화( = 대입연산자(선언시))
class Car {
	int door = 4;			// 기본형 변수의 초기화
    	Engine e = new Engine();	// 참조형 변수의 초기화
}
  1. 초기화 블럭( 복잡한 초기화에 사용)
  • 인스턴스 초기화 블럭 : { } (거의 안씀)
  • 클래스 초기화 블럭 : static { }
  1. 생성자( iv초기화, 복잡한 초기화)

💎 cv, iv 초기화

  1. 자동 초기화
  2. 간단 초기화 -> = (대입연산자)
  3. 복잡 초기화
  • 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 { // 컴파일러가 자동추가
	//...
}

💎 출처

자바의 정석 📚📚으로!

profile
열심히가 되는 길♨_♨

0개의 댓글