본문 바로가기
프로그래밍/Java

0404

by minNa2 2023. 4. 4.

<상속(Inheritance)>
- 부모가 자식에게 물려주는 행위(부모 클래스, 자식 클래스)
- 기존 클래스를 재활용하는 것
- 기족 클래스를 확장(extends)하는 것
- 상속을 이용하면 동일한 내용을 여러 번 작성할 필요가 없다. (중복 제거)


<상속이 가능한 경우>
- IS-A 관계가 성립할 때 (A는 B다.)
ex) 전기차는 자동차이다.
      학생은 사람이다.
      extend

- HAS-A 관계가 성립할 때 (A는 B를 가지고 있다.)  // 비추천
ex) 자동차는 핸들을 가지고 있다.
      사람은 가방을 가지고 있다.
      객체 생성


<상속 문법>
class 부모클래스(=슈퍼클래스) {

}

class 자식클래스(=서브클래스) extends 부모클래스 {

}


<상속 특징>  // this(): 내 생성자, super(): 부모 클래스 생성자 호출(상속 관계에 있을 때) 
- 서브 클래스는 슈퍼 클래스의 멤버(필드, 메소드)를 사용할 수 있다.
- ★ 한 개의 클래스만 상속할 수 있다. (다중 상속 불가능) -> c++은 가능
- 상속 횟수는 제한이 없다.
- 자바의 모든 클래스는 java.lang.Object 클래스를 슈퍼클래스로 가진다.
(java.lang.Object 클래스 = 단군할배) // 최상위 클래스는 Object
class Person { }
자바에 의해 다음의 형태로 해석
class Person extends Object { } : Object 클래스의 멤버를 사용할 수 있다.


<메소드 오버라이드(Method Override) -> 오버로딩과 다름 ★★>
- 부모 클래스가 가지고 있는 메소드를 자식 클래스가 다시 만드는 것
- 부모 클래스가 가지고 있는 메소드와 완전히 동일한 원형으로 다시 만든다.
(리턴 타입 + 메소드명 + 매개변수 => 모두 동일)
- 자식 클래스에서 부모 클래스의 메소드를 다른 방식으로 재정의 하기 위해 사용
ex) 부모 : 자동차 문이 있다.
      자식 : 자동차 문이 2개 있다.
- 어노테이션 "Override"를 붙이면 개발자의 실수를 줄일 수 있다.
(동일한 원형이 아니면 에러 발생 시켜준다.)


<어노테이션(Annotation)>
- Java5부터 새롭게 추가된 요소이다.
- 여러 목적 중 메타 데이터의 비중이 가장 크다.
* 메타 데이터 : 데이터를 위한 데이터를 의미, 한 데이터에 대한 설명을 의미하는 데이터
- 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보


<어노테이션 용도>
- 컴파일러(번역기; 우리가 쓴 코드를 컴퓨터가 알 수 있도록 기계어로 번역)에게 코드 문법 에러를 체크하도록 정보를 제공
- 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
- 실행 시(런타임) 특정 기능을 실행하도록 정보를 제공 // 시스템에게 어떤 정보를 제공해서 원래 일어날 에러나 원칙 등 막음


<어노테이션의 종류>
- @Override // 새로 정의할 메소드라고 알려짐
  1) 선안한 메소드가 오버라이드 되었다는 것은 나타냄
  2) 만약 상위(부모) 클래스(또는 인터페이스)에서 해당 메소드를 찾을 수 없다면 컴파일 에러 발생

반응형

'프로그래밍 > Java' 카테고리의 다른 글

0410  (0) 2023.04.10
0406  (0) 2023.04.06
0403  (0) 2023.04.03
0331  (0) 2023.03.31
0330  (0) 2023.03.30