본문 바로가기

혼공단/혼공자1기

[혼공 학습단 1기] 2주차 미션 330쪽 문제 5번 실행결과 인증샷

반응형

2019/07/23 - [혼공단/혼공자] - [혼공 학습단 1기] 1주 차 미션 JDK 설치 화면 인증샷

5.Parent 클래스를 상속받아 Child 클래스를 다음과 같이 작성했습니다. ChildExample 클래스를 실행했을 때 호출되는 각 클래스의 생성자의 순서를 생각하면서 출력 결과를 작성해 보세요.

 

 

 

 

객체지향 개념 정리

  •  클래스 : 객체를 만들기 위한 설계도
  • 객체 :  클래스로부터 생성되며 ‘new 클래스()’로 생성합니다.
  • new  연산자 : 객체 생성 연산자이며, 생성자를 호출하고 객체 생성 번지를 리턴합니다.
  • 클래스 변수 : 클래스로 선언한 변수를 말하며 해당 클래스의 객체 번지가 저장됩니다.
  • 인스턴스 : 객체는 클래스의 인스턴스입니다.
  • 클래스 멤버 : 클래스에 선언되는 멤버는 필드, 생성자, 메소드가 있습니다.
  • 필드 선언 : 클래스 중괄호 {} 블록 어디서든 선언하나, 생성자와 메소드 내부에서는 선언할 수 없습니다.
  • 필드 사용 : 클래스 내부의 생성자와 메소드에서 바로 사용이 가능하나, 클래스 외부에서 사용할 경우에는 반드시 객체를 생성하고 참조 변수를 통해 사용해야 합니다.
  • 기본 생성자 : 클래스 선언 시 컴파일러에 의해 자동으로 추가되는 생성자입니다.
  • 생성자 선언 :  클래스로부터 객체를 생성할 때 호출되는 생성자를 명시적으로 선언할 수 있습니다. 생성자를 선언하면 기본 생성자는 생성되지 않습니다.
  • 매개 변수 : 생성자 호출 시 값을 전달받기 위해 선언되는 변수를 말합니다.
  • 객체 초기화 : 객체를 사용하기 전에 준비하는 과정으로 필드를 선언할 때 초기화하거나 생성자 내부에서 필드 값을 초기화할 수 있으며, 메소드를 호출하는 내용으로 구성됩니다.
  • this() : 객체 자신의 또 다른 생성자를 호출할 때 사용합니다.
  • 선언부 : 메소드 선언부는 리턴 타입, 메소드 이름, 매개 변수 선언 부분을 말합니다.
  • void : 리턴 값이 없는 메소드는 리턴 타입으로 void를 기술해야 합니다.
  • 매개 변수 : 메소드 호출 시 제공되는 매개값은 메소드 선언부의 매개 변수에 차례대로 대입되어, 메소드 블록 실행 시 이용됩니다.
  • 리턴 문 : 메소드 선언부에 리턴 타입이 있다면 리턴값을 지정하기 위해 return문이 반드시 있어야 합니다. 리턴 타입이 void라면 return문은 필요없지만, 메소드 실행 종료를 위해 사용할 수도 있습니다.
  • 호출 : 메소드를 실행하려면 ‘메소드 이름(매개 값, …)’ 형태로 호출해야 합니다.
  • 오버 로딩 : 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩이라고 합니다. 메소드 오버로딩의 조건은 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다는 점입니다.
  • 인스턴스 멤버 : 인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부릅니다.
  • this : 객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있습니다. 예를 들어 this.model은 자신이 가지고 있는 model 필드라는 뜻입니다. this는 주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용됩니다.
  • 정적 멤버 : 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말합니다. 이들을 각각 정적 필드, 정적 메소드라고 부릅니다.
  • static : 정적 멤버를 선언할 때 사용하는 키워드입니다.
  • 싱글톤 : 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있습니다. 단 하나만 생성된다고 해서 이 객체를 싱글톤이라고 합니다.
  • 패키지 선언 :  해당 클래스 또는 인터페이스가 어떤 패키지에 속할 것인지를 선언하는 것을 패키지 선언이라고 합니다.
  • import문 :  사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있다면 import문으로 해당 패키지의 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일러에게 알려줘야 합니다.
  • 접근 제한자 : 클래스와 인터페이스를 다른 패키지에서 사용하지 못하도록 막을 필요가 있습니다. 그리고 객체 생성을 막기 위해 생성자를 호출하지 못하게 하거나 필드나 메소드를 사용하지 못하도록 막아야 되는 경우도 있습니다. 이때 접근 제한자를 사용할 수 있습니다.
  • Getter/Setter  : 필드는 외부에서 접근할 수 없도록 막도 메소드는 공개해서 외부에서 메소드를 통해 필드에 접근하도록 유도합니다. 필드의 값을 외부로 리턴해주는 메소드를 Getter라고 하고 외부에서 값을 받아 필드를 변경하는 메소드를 Setter라고 합니다.
  • 상속 : 부모 클래스의 필드와 메소드를 자식 클래스에서 사용할 수 있도록 합니다.
  • 메소드 재정의 : 부모 메소드를 자식 클래스에서 다시 정의하는 것을 말합니다.
  • final 클래스 : final 키워드로 선언된 클래스는 부모 클래스로 사용할 수 없는 final 클래스입니다.
  • final 메소드 : final 키워드로 선언된 메소드는 자식 클래스에서 재정의할 수 없는 final 메소드 입니다.
  • 추상 클래스 : 클래스들의 공통적인 필드와 메소드를 추출해서 선언한 클래스를 말합니다.
  • 추상 메소드 : 추상 클래스에서만 선언할 수 있고, 메소드의 선언부만 있는 메소드를 말합니다. 추상 메소드는 자식 클래스에서 재정의되어 실행 내용을 결정해야 합니다.
  • 다형성 : 상속은 같은 종류의 하위 클래스를 만드는 기술이고, 인터페이스는 사용 방법이 동일한 클래스를 만드는 기술이라는 개념상의 차이는 있지만 둘 다 다형성을 구현하는 방법은 비슷합니다. 모두 재정의와 타입 변환 기능을 제공하기 때문입니다.
  • 익명 자식 객체 : 자식 클래스가 재사용되지 않고 오르지 특정 위치에서 사용할 경우라면 자식 클래스를 명시적으로 선언하는 것은 귀찮은 작업이 됩니다. 이 경우에는 익명 자식 객체를 생성해서 사용하는 것이 좋은 방법입니다.
  • 익명 구현 객체 : 구현 클래스가 재사용되지 않고 오르지 특정 위치에서 사용할 경우라면 구현 클래스를 명시적으로 선언하는 것은 귀찮은 작업이 됩니다. 이 경우에는 익명 구현 객체를 생성해서 사용하는 것이 좋은 방법입니다.

 

반응형