본문 바로가기

Java/본격 Java 상속

(13)
[Java] 상속 has-a관계 has-a관계 하위클래스 has a 상위클래스의 관계로 하위 클래스가 상위 클래스를 소유하는 개념입니다. 해석 : '하위클래스'가 '상위클래스'를 소유한다. has-a관계일 경우 상속을 받기도 합니다.(상속이 어울리지 않는 경우도 있습니다.) has-a관계에서 소유하지 않는 경우가 있으면 상속받지 않는 것이 좋습니다. is-a관계와 has-a관계 이외에는 상속을 하지 않는 것이 보통입니다.(안한다고 봐도 무방합니다.) . . 예제1 class Gun { int bullet; public Gun(int n){ bullet +=n; } public void shot(){ System.out.println("BBANG!!"); bullet--; } } class Police extends Gun { // Po..
[Java] 상속 is-a관계 상속의 조건(상속을 위한 클래스간의 관계) - 모든 클래스들이 상속을 받을 수 있으나, 특정 관계의 클래스들만 상속을 하는 것이 좋습니다. - 특정 관계가 아닌 클래스들이 상속을 받게 되면 오히려 상속받지 않은 것만 못합니다. - 상속을 받을 조건(관계) is-a관계 하위클래스 is a 상위클래스의 관계로 하위클래스가 상위클래스의 한 종류가 되어야 합니다. 해석 : '하위클래스'는 일종의 '상위클래스'이다. is a 관계일 경우 상속을 받아도 무방합니다. . . 접근방법 - Computer와 Notebook과 Tablet이 서로 is-a관계인지 확인한다. 예제 class Computer { String owner; public Computer(String name){ owner= name; } publi..
[Java] static 상속 - private으로 선언된 상위 클래스의 멤버는 상속은 되지만 하위 클래스에서 접근을 할 수는 없으며, 접근하기 위해서는 메소드를 통해 접근해야 합니다. - 상속의 단계가 몇 단계이든 상관없이 상위 클래스의 멤버에 접근 할 수 있습니다. - 클래스멤버(static)도 상속이 되어 하위클래스에서도 공유할 수 있습니다. . . 예제 class Adder { static int val = 0; public void add(int n){ val += n; } } class AdderFriend extends Adder{ public void friendAdd(int n){ val += n; } public void showVal(){ System.out.println(val); } } class InheriS..
[Java] 상속 실습 상속에 대해 실습을 해보았다. WaterCar에서 showCurrentGauge() 메소드를 사용하기 위해 HybridCar와 Car를 상속 받았다. (단일 상속이기 때문에 WaterCar가 HybridCar를, HybridCar가 Car를 상속받는다.) . . 예제 class Car{ int gasolineGauge; public Car(int gasolineGauge){ this.gasolineGauge = gasolineGauge; } } class HybridCar extends Car{ int electricGauge; public HybridCar(int gasolineGauge, int electricGauge){ super(gasolineGauge); this.electricGauge = ..
[Java] 상속 기초 상속(inheritance) - 두 클래스간의 관계를 의미하며 상속을 주는 클래스(super, 상위 클래스)가 상속을 받는 클래스(sub, 하위 클래스)에 멤버들을 자유롭게 사용할 수 있게 해줍니다. - 하위 클래스에서 상위 클래스의 멤버를 사용할 대 인스턴스를 생성하지 않고 사용이 가능합니다. - 단, 자바에서의 상속에서는 단순히 코드의 재활용성에 초점을 두면 안됩니다. - 자바에서의 상속은 단일 상속(한 클래스에서만 상속받음)만을 지원합니다. - 상속의 목적은 삭속관계의 클래스들을 공통적인 규약으로 묶기 위해 상속을 합니다. - 자바의 모든 클래스는 상속 관게에 속해 있습니다. 모든 클래스는 자동으로 java.lang.Object 클래스를 상속받고 있습니다. - 문법 class 하위클래스명 exten..