본문 바로가기

Wanna be a Programmer/Java Programming

Java Programming - 상속, 메소드 오버라이딩, super


상속(Inheritance)

- 기존의 class에 정의된 변수나 메소드를 재사용하여 새로운 class를 만드는 것

- Javaclass간의 상속에서는 단일상속을 지원, 다른 객체지향언어는 주로 다중상속을 지원

- 상속의 사용

    ex) public class Animal { }

    public class Human extends Animal : [제한자]class 식별자 extends 부모class이름 { }

- 상위 클래스의 객체와 하위 클래스의 객체는 동일한 곳에 생성되는 것이 아니라 상위클래스 객체 따로 하위클래스 객체 따로 생성되며 하위 클래스는 상위 클래스의 속성과 메소드를 상속 받을 수 있도록 링크가 되어있어 상위 클래스의 속성과 메소드를 호출 할 수 있다.

- super상위 클래스의 생성자 호출 또는 상위 클래스의 객체를 참조하는 변수로 사용된다.

 

this의 역할 

Overloading 생성자 

현재 일하는 메소드의 객체 local

 

 

 

 

 

 

Class : 동물

 

 

 

 

 

 

 

 

이름, 나이, 성별

 

 

 

 

 

 

 

 

잔다(), 배설한다()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Class :

 

Class : 고양이

 

Class : 사람

,

 

,

 

혈액형, 국적

짓는다()

 

할퀴다()

 

공부한다(), 밥먹는다()

 


Super


- 부모의 생성자 호출 시 사용 

부모 class의 생성자는 상속이 불가능하지만 자식 class의 생성자에서 부모의 생성자 호출은 가능하다.

- 상속 

인스턴스 변수, 메소드, 생성자, but 생성자는 클래스 이름과 같아야 하므로 상속 불가능

- 구문 : super([argument, ]); 생성자 구현부의 첫 번째 명령어로 위치해야한다. this와 같이 사용 불가능, 생성자 구현부에 this()super() 코드가 없으면 super();부모의 no-argument 생성자 호출 하는 코드가 자동으로 들어간다.

- 객채의 참조변수로서의 super 

하위 class의 객체에서 부모 class의 객체를 참조하는 참조변수

 Overriding 메소드에서 부모에 정의된 원본 메소드 호출시

 

 

Method Overriding(메소드 재정의)


- 하위 class에서 부모 class에 정의된 메소드의 구현을 재정의 하는 것

- 규칙

- 전제 : 상속관계

이름, return type, 매개변수가 같아야한다

이름이 같고 매개변수가 다르면 메소드 오버로딩

접근제한자의 범위가 부모와 같거나 더 넓어야한다.

(public > protected > default > private)

Exception 관련 규칙