til#8(1001)

강희인·2022년 10월 2일
0

배운점


상속

현실에서 부모님이 자식들에게 재산을 물려주는 것과 비슷하며, 자식(하위 클래스)가 상속받고싶은 부모(상위 클래스)를 선택해서 부모 클래스의 필드와 메서드를 물려받는 것. ( 접근 제어자를 통해 상속이 안될 수도 있다.)

장점

중복된 코드를 줄일 수 있으며, 유지 보수가 편리하며, 다형성을 구현할 수 있다.

class A {
	String aField = "클래스 A 필드";
	public void aMethod() {
		System.out.println(aField);
		// System.out.println("A : "+ bField); // 컴파일 에러(자식 필드 사용 불가)
	}
}

class B extends A {
	String bField = "클래스 B 필드";
	public void bMethod() {
		System.out.println(aField); // 부모 클래스 필드 사용
		System.out.println(bField); // 본인 클래스 필드 사용
		// System.out.println("B : "+cField); // 컴파일 에러(자식 필드 사용 불가)
	}
}

class C extends B {
	String cField = "클래스 C 필드";
	public void cMethod() {
		System.out.println(aField); // 조부모 클래스 필드 사용
		System.out.println(bField); // 부모 클래스 필드 사용
		System.out.println(cField); // 본인 클래스 필드 사용
	}
}

public class SuperSubEx01 {
	public static void main(String[] args) {
		System.out.println("----------A----------");
		A a = new A();
		a.aMethod(); // 본인 메소드 사용
		// a.bMethod(); // A(부모) 객체로 B(자식) 메소드 접근 불가
		System.out.println("----------A----------");
		System.out.println("----------B----------");
		B b = new B();
		b.aMethod(); // 부모 메소드 사용
		b.bMethod(); // 본인 메소드 사용
		// b.cMethod(); // B(부모) 객체로 C(자식) 메소드 접근 불가
		System.out.println("----------B----------");
		System.out.println("----------C----------");
		C c = new C();
		c.aMethod(); // 조부모 메소드 사용
		c.bMethod(); // 부모 메소드 사용
		c.cMethod(); // 본인 메소드 사용
		System.out.println("----------C----------");
	}
}
[출처] [JAVA/자바] 상속의 개념 및 부모/자식 클래스|작성자 JOKER

위 코드를 보면 B는 A에게 , C는 B에게 상속 받는다. 그리고 각 메소드에서 상속받은 데이터들을 이용하여 출력한다.

단 부모 클래스는 자식클래에서 정의한 메소드나 필드를 사용하지 못한다.


profile
쑥쑥이

0개의 댓글