태그

#JAVA

JAVA - inheritance

2021년 6월 11일 02:00

49-thumbnail-image

상속

  • 클래스끼리 물려주거나 물려 받는 것
  • 물려준 클래스(부모 클래스)의 속성과 기능을 물려 받은 클래스 (자식 클래스) 에서 사용이 가능해지고 물려받은 클래스에서는 추가적은 표현을 통해 새로운 클래스를 만드는 문법
  • 클래스의 재활용, 프로그램의 유연성(수정, 삭제, 추가)의 중대를 위해 사용
  • 상속을 바탕으로 다형성을 구현한다

형식

  • 자식 클래스에서 부모 클래스를 지정한다
  • extends를 통하여 클래스를 상속받는다 (단 1개만)
  • 아무리 자식이더라도 부모의 private멤버는 접근 불가 ★★★
class 자식클래스명 extends 부모클래스명 {
           코드 정의;
}

ex )

class Person

// 부모 클래스 (super class)
public class Person {
	protected String name; // 자식클래스는 접근 가능함 (같은 패키지 안에 있는 클래스들도)
	
	// 생성자
	public Person() {
		System.out.println("응애애앵!!!");
	}
	
	public Person(String name) {
		this.name = name;
	}
	
	public void introduce() {
		// 내이름은 OO 입니다
		System.out.println("내 이름 " + this.name + ", 탐정이죠");
	}
}

class Student

// 자식 클래스 (child class)
public class Student extends Person {

	private String major;

	// 생성자
	public Student() {
		System.out.println("학생입니다");
	}

	// 오버로딩 (파라미터 또는 파일의 개수가 다른 것)
	public Student(String name, String major) {
		super(name); // 무조건 부모가 제일 먼저 생성되어야 함
		// super.name = name;
		this.major = major;
	}
	
	// 오버라이드 : 부모클래스에 있는 메소드를 자식 클래스에서 재정의 하는 것
	@Override
	public void introduce() {
		super.introduce();
		System.out.println("내 전공은 " + this.major + "입니다");
	}

}