IT/Java

자바 상속(Inheritance)

노마드오브 2018. 7. 17. 00:03

상속(Inheritance)

A는 B이다(A is a B) 관계일 때 상속관계 가능.

class A extents B {}

사람(A)은 동물(B)이다.(O) <-> 동물은 사람이다.(X) (역은 성립안됨)

중학생은 학생이다.(O) <-> 학생은 중학생이다.(X)


상속의 장점

- 클래스의 간결화 : 멤버의 중복작성 불필요

- 클래스 관리 용이 : 클래스들의 계층적 분류

- 소프트웨어의 생산성 향상 : 클래스 재사용과 확장 용이





파일명 : Test1.java

패키지 : com.test


package com.test;


// 포함(Include)

// A는 B를 가진다(A has a B) 관계일 때는 포함관계 가능.

class Car {

int num;

String color;

Engine engine = new Engine();

}

class Engine {

}





// 부모클래스, 수퍼클래스, 상위클래스

class Parent {

void parentPrn() {

System.out.println("Parent 클래스의 parentPrn() 메소드");

}

}


// 자식클래스, 서브클래스, 하위클래스

class Child extends Parent { // Parent 상속

void childPrn() {

System.out.println("Child 클래스의 childPrn() 메소드");

}

}


class GrandChild extends Child {

void grandPrn() {

System.out.println("GrandChild 클래스의 grandPrn()");

}

}



public class Test1 {


public static void main(String[] args) {

// 부모클래스에서 부모 메소드 호출

Parent p = new Parent();

p.parentPrn();


// 자식클래스에서 자식, 부모 메소드 호출

Child c = new Child();

c.childPrn();

c.parentPrn();


GrandChild g = new GrandChild();

g.grandPrn();

g.childPrn();

g.parentPrn();


} // main의 끝


}