단단히

클래스의 상속 본문

Java/개념 정리

클래스의 상속

이게아닌데 2022. 5. 30. 16:31

[객체지향 프로그램의 특징]

 

1. 캡슐화 : 클래스의 소스를 숨기거나 실제 구현 내용의 일부를 은닉하는 기술이다.

 - 접근 지정자(=접근 제한 수식어) > public, protected, private, default 

2. 상속 : 기존의 클래스(슈퍼 클래스)를 다른 클래스(서브클래스)가 재활용하는 것.

3. 다형성 : 슈퍼클래스를 자료형으로 생성한 변수로 서브 클래스의 객체를 참조할 수 있다.

                  하나의 함수가 상황에 따라 다르게 동작하는 것을 의미한다. 오버 로딩과 오버 라이딩이 있다.

-오버 로딩 : 함수의 이름은 같으나 매개변수 시그니처를 다르게 사용하는 것.

-오버 라이딩 : 상위 클래스의 메서드를 하위 클래스의 동일한 이름으로 메서드를 재정의 하는 것.

4. 추상화 : 객체의 속성과 기능(메서드)을 하나로 모은 것을 의미한다.

5. 정보 은닉

 

++ 객체지향 프로그래밍 언어 구성요소 : 클래스, 객체, 속성, 메서드

++ 자바 프로그램에서 클래스의 구성요소 : 메서드, 필드, 생성자

 

[캡슐화]

 

객체 RefA는 필드 변수에 접근 지정자 중 private를 사용했다. 그래서 메인 메서드에서 접근하지 못해 출력을 못한다.

private :  같은 클래스 안에서만 사용이 가능하다. 다른 필드로 넘어갈 때는 사용할 수 없다.

protected : private보다 접근 제어를 확장하여 자신을 상속한 객체까지 사용할 수 있다.

 

 

[상속]   

#부모(슈퍼)클래스 #자식클래스 #extends #new #추상클래스

우선 상속을 하는 이유는 상속을 하면 클래스의 수정을 최소화할 수 있다. 보수할 때 시간단축이 가능하다.

 

상속이란 부모 클래스로부터 파생된 자식 클래스에서 새로운 기능을 추가해서 사용하는 기술이다.

main 클래스에서 위와 같은 방식으로 객체를 생성한다.

 

! 상속을 한다고 해서 부모 클래스의 모든 필드와 메서드를 받는 것은 아니다. 부모 클래스에서 private 캡슐화를 통해 접근을 제어한 필드와 메서드는 사용하지 못한다. 그리고 부모와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메서드도 상속 대상에서 제외된다.

 

Java는 다중 상속을 허용하지 않기 때문에 여러 부모 클래스를 상속할 수 없다.

extend 뒤에는 하나의 클래스만 올 수 있다.

 

자식 클래스에서 부모 메서드의 기능을 약간 바꿔서 사용하고 싶다면 재활용(오버라이딩)이 가능하다. 

이때 이름과 시그니처가 일치해야한다. 되도록 @override 를 사용하자. 만약 선언에 오타가 나면 eclipse에서

컴파일 오류를 만들어 알려주기때문에 실수를 줄일 수 있다.

 

서브클래스의 생성자 내부에는 슈퍼클래스에서 갖고 있는 생성자를 super() 키워드로 호출해야 한다.

이때 슈퍼클래스의 생성자와 서브클래스의 super()는 매개변수 시그너처가 일치해야 한다.

 

'Java > 개념 정리' 카테고리의 다른 글

클래스의 상속 _ 추상 클래스  (0) 2022.06.10
메모리 구조  (0) 2022.06.01
참조 자료형, 객체, 커스텀 클래스  (0) 2022.05.24
예외처리  (0) 2022.05.22
메서드(Method)  (0) 2022.05.22
Comments