본문 바로가기

IT일반과목/java

자바 상속에 대하여

상속


객체지향언어의 대표적인 java를 공부할 때 가장 중요하고 꼭 알고 넘어가야 하는 부분이 상속과 추상화 개념이다.


상속은 우리가 일상에서 알고 있는 상속이다.


프로그래밍에서도 어떤 객체가 다른 객체로부터 객체의 데이터(속성)와 메소드를 상속 받을 수 있다. 이럴 경우 상속받은 객체는 상속해준 객체의 데이터 및 메소드를 이용할 수 있고 또는 변경 할 수 있다.


상속을 통해 4발 자전거 만든다 생각해보자

자전거는 기본적으로 핸들, 바퀴, 브레이크, 패달, 프레임 등이있다.

4발이니 바퀴가 4개가 필요하다.


상속이 필요한 이유 - 자전거매장에서 2발자전거를 사갖고와서 뒷바퀴에 바퀴2개만 붙이면 바로 4발 자전거가 나온다. 이런의미로 상속이 필요하다.


프로그래밍에서도 좋은 클래스가 있다면 상속을 통해 개발시간을 단축 시킬 수 있다.


기존의 클래스는 어느정도 검증된거기때문에 시행착오를 줄일 수 있다.


상속이 필요한 이유 -> 항상 맨땅에 해딩할 수는 없다. 지름길이 있다면 쉽게 갈 수도 있다.

1. 모든개발을 처음부터 하얀 도화지에 할 필요없다. 만들어져있는 훌륭한소스가있다면 이걸 통해 할수있기때문에 버그도 없기 때문이다.


2. 다양한 객체를 상속을 통해서 하나의 객체(타입)으로 묶을수있다.

(추상화개념이 포함된말이니 어려울땐 이런게있구나 하고넘기기)


A라는 객체가 있고 A클래스이고 B라는 객체가 있고 B클래스 등등 n개가있다.

A는 A만의 속성과 메소드가 있고 등등이 있다.

S클래스가 A,B위에 있다고 하면 S클래스로부터 A,B클래스가 상속을 받았다 하면 

A클래스를 S클래스를 부를수있고 B클래스도 S클래스로 부를 수 있다.


부모클래스를 하나 만들고

자식클래스 상속받을 클래스에서는 뒤에 extends 부모클래스를 붙여주면 된다.


자바에서는 다중 상속을 하지않는데 이게 무슨말이냐면 상속받을 자식은 하나밖에 안된다는 거다.

아들클래스에서는 속성만 있고 그 속성은 아들클래스는 것만 있다.

아들은 지금 할수있는게 없지만 부모클래스를 상속 받는 순간 부모가 갖고있는 기능을 쓸수 있는 것이다.


============================================================================================

package jongkyu.inheritance;


public class ChildClass extends ParentClass {

public String cStr="아들 클래스";


public ChildClass() {


}

}

---------------------------------------------------------------------------------------------
package jongkyu.inheritance;

public class ParentClass {
public String pStr = "부모 클래스";
public ParentClass() {
}
public void getPapaName() {
System.out.println("홍길동");
}
public void getMamiName() {
System.out.println("홍길자");
}
}

---------------------------------------------------------------------------------------------
package jongkyu.inheritance;

public class MainClass {
public static void main(String[] args) {
ChildClass childClass = new ChildClass();
System.out.print("아버님 이름 :");
childClass.getPapaName();
System.out.print("어머님 이름 :");
childClass.getMamiName();
System.out.println(childClass.cStr);
}
}