Java

JAVA) 상속

5_jinseok12 2018. 7. 10. 08:46
728x90

상속이란?

 

상속은 부모의 재산을 자식이 물려받는다는 의미이다

이와 비슷하게 자바는 객체지향언어이므로 부모 클래스에서 

만들어진 필드와 메소드를 자식 클래스가 물려받는다고 이해하면 된다.

 

하지만 주의할점은 상속은 클래스 사이의 상속이다. 객체 사이의 상속이 아니므로 주의하도록 하자

 

아래의 몇가지 예를 통해 알아보자

 

ex 1) 상속

 

 

 

위에 Point로 만들어진 클래스가 부모 클래스를 나타낸다

부모클래스의 필드와 메소드를 작성해놓은 후


class ColorPoint extends  Point


이렇게 선언해놓으면 자식클래스가 부모클래스를 물려받게 된다.

즉 자식클래스는 ColorPoint가 되고 extends를 통해 부모클래스인 Point를 물려받게 되는것이다

 

class (자식클래스) extends (부모클래스)

 

 

Point p = new Point()  : Point 객체를 생성. 서브클래스 객체

p.set(1,2) :  Point 클래스의 set()을 호출 (위에서 p로 생성했으므로 set 앞에 p.을 붙인다) 

 

ColorPoint cp = new ColorPoint()  :  ColorPoint 객체를 생성. 서브클래스 객체

cp.set(3,4) : Point 클래스의 set()을 호출 (위에서 cp로 생성했으므로 set앞에 cp.을 붙인다)

cp.setColor("red") : ColorPoint 클래스의 setColor()을 호출

 

 

결과값 출력.

 

 

 

ex 2) 멤버 접근 지정

 

 

위의 예를 보면 Person 이라는 클래스를 생성 한 후

private, int, protected, public  서로다른 필드를 선언하였다.

 

private : 오직 현재의 클래스만 접근 허용.

public : 모든 클래스에서 접근 허용

protected : 같은 패키지에 속한 모든 클래스 허용, 상속받는 서브클래스 허용

 

 위의 3가지는 기본적이면서 중요하므로 반드시 알아두자

 

Student 클래스에서 Person 클래스를 상속받고 그에 맞는 값을 저장한다.

하지만 위에서 weight은 private 를 사용했기 때문에 그냥 weight = 99 라고 입력하면 오류가 발생한다.

setWeight() 멤버를 통해 간접적으로 접근해서 오류가 발생하지 않도록 해야한다.

다시말해 private 멤버인 weight는 set으로 주고 값을 get으로 받는다

 

 

정상적인 결과값 출력

 

 

ex3) 추상 클래스

 

추상클래스를 만든 후 추상메소드를 선언만 해놓는다

 

 

처음에 위에서 선언한 추상클래스를 선언하였으므로 이제 구현할 차례이다

구현하는 것은 서브클래스의 역할이므로 추상메소드를 원하는 대로 만들어서 구현할 수 있다. 

 

 

구현한 결과값

 

 

반응형

'Java' 카테고리의 다른 글

Java) while 문과 case 문  (0) 2018.04.03
Java) 기초문법 과 if 문  (0) 2018.04.03
Java eclipse 설치  (0) 2018.03.21