상속이란 부모(Super) 클래스의 속성(전역변수 = 필드)과 메소드를 상속 받는 것
자식은 부모의 private 요소를 제외하고 모두 접근가능하지만, 부모는 자식의 것에 접근 불가능하다.
또한 생성자는 상속되지 않는다.
상속은 단일 상속 즉, 부모는 단 하나만 가능.
다만, 대를 물린(?) 상속은 가능ㅋㅋ
(자바의 모든 클래스는 오브젝트 클래스를 상속)
상속은 extends 키워드를 사용
class A extends B { ... }
A가 B를 상속받는다
자식 클래스들은 하나의 부모 클래스를 상속 받더라도, 각각 개별적인 부모 클래스를 받는다.
부모 클래스의 static 요소는 static의 특성대로 고유하고 각 자식 요소나 부모도 동일하게 한 가지의 static 요소에 접근하게 된다.
간단한 상속예제
class Flower
{
public String Flowername;
public int cost;
protected void printAttributes()
{
System.out.println("Flowername="+Flowername+"\tcost="+cost);
}
}
class Rose extends Flower // 부모인 Flower의 속성과 메소드 모두를 상속받게 된다.
{
Rose() //생성자
{
Flowername = "장미"; //선언하지 않은 변수지만 상속받았으므로 사용가능하다.
cost = 100; //선언하지 않은 변수지만 상속받았으므로 사용가능하다.
}
}
class Tulip extends Flower
{
Tulip()
{
Flowername = "튤립";
cost = 200;
}
}
public class InheritanceExam
{
//메인메소드에서
public static void main( String [] args )
{
Flower Flower = new Flower();
Rose Rose = new Rose();
Tulip Tulip = new Tulip();
Flower.printAttributes();
Rose.printAttributes();
Tulip.printAttributes();
}
}