본문 바로가기

6개월 대장정/JAVA 개념

10일차 - 상속, 오버라이딩

반응형

안녕하세요. pitang입니다.

저번에 살짝 스포를 했는데 상속과 오버 라이딩을 알아봅시다!

 

상속(Inheritance)

객체지향 프로그램에서 상속은 기존의 클래스를 확장하여 새로운 클래스를 이끌어내는 것을 의미한다.

 

상속의 목적은 코드를 재사용하는 것이다.

단일 상속만을 지원하며, 상속을 받아 만들어지면 새롭게 만들어진 클래스를 자식(child of sub) 클래스,

멤버 변수와 메서드를 물려준 클래스는 부모(parent or super) 클래스라고 부른다.

 

상속을 하면 부모 클래스의 멤버 변수와 메서드가 자식 클래스에 상속이 된다. 하지만, 생성자는 상속이 되지 않는다.

일반화된 클래스는 부모 클래스, 구체화된 클래스는 자식 클래스라고 생각하면 된다.

 

상속을 사용하는 키워드는 extends 부모 클래스 이름이다.

 

ex1)

상속이 없다면 밑에 보이듯 불필요한 코드를 재작성하는 번거로움이 있다.

inherit.bad

 

ex2)

상속이 있다면 코드를 재사용함으로 새로운 클래스를 만드는 시간과 노력을 줄일 수 있다.

Person 부모클래스 (ParentClass)

 

자식 클래스 (SubClass)
MainClass
MainClass console

자식 클래스의 구체적인 내용은 아직 쓰이지 않았지만 상속을 하며 코드가 간결해진 것을 볼 수 있다.

구체적인 내용을 쓰는 것은 바로 밑에 있을 오버 라이딩을 하면 표현이 가능하다.

 

오버 라이딩(Overriding)

오버 라이딩은 메서드 재정의라고 한다.

부모 클래스로부터 상속받은 메서드를 자식 클래스에서 행위를 바꾸거나 보완하기 위해 다시 정의해서 사용하는 것이다.

 

부모 클래스에서 특별한 용도로 사용하던 메서드를 자식 클래스에서 다른 용도로 사용할 때 필요하다. 

덮어쓰기라고 생각하면 쉽다.

 

오버 라이딩이 되었다면 무조건 우선 실행한다.

 

오버 라이딩의 규칙은

반드시 상속을 전제로 해야 하며, 반환 유형, 메서드 이름, 매개 변수 선언이 정확히 일치해야 한다. 

 

ex1)

ParentClass - ChildClass
overriding.basic MainClass
MainClass console

 

ex2)

person ParentClass
Employee SubClass
Teacher SubClass
Student Subclass
eoverriding.person MainClass
MainClass console

 

 

메서드와 클래스와 상속, 오버 라이딩까지,, 힘든 시간이었어요.

내일은 또 무엇을 알게 될지 너무나도 기대가 되네요.. 하핳핳

 

감사합니다.

 

*m1맥북을 사용 중입니다.*

728x90
반응형