// member field
private boolean disel; // private은 파생 클래스에서 사용하지 못함
protected boolean gasoline; // protected은 파생 클래스에서 사용 가능하나 외부(다른 패키지)에서는 호출하지 못함
protected int wheel = 4;
// constructor
protected Car() { disel = true; gasoline = true; }
protected Car(int wheel) { this.wheel = wheel; disel = false; gasoline = false; }
}
public class Sedan extends Car {
// member field
private boolean gasoline; // 파생 클래스에서 기반클래스에 멤버필드명이 같다면 default는 자신의 멤버부터 호출 & this.gasoline을 사용함
// constructor
public Sedan() { gasoline = false; } // 내부적으로 super() 호출
public Sedan(int wheel) { super(wheel); gasoline = true; } // super(int wheel)를 호출 – protected 생성자는 파생클래스에서 호출 가능
// method
public void sedanMove()
{
System.out.println(“move wheel=” + wheel);
static void Main(string[] args)
{
Car myCar = new Car(); // protected 생성자 같은 패키지 내에 사용가능.
myCar.move(); // protected 메소드 호출 가능
System.out.println(“myCar wheel=” + myCar.wheel); // protected 필드 호출 가능
// 바퀴 4개 디젤 자동차
Sedan myCar1 = new Sedan(); // public 생성자 호출 가능
myCar1.move(); // protected 메소드 호출 가능
myCar1.sedanMove(); // public 메소드 호출가능
// 바퀴 6개 가솔린 자동차
Sedan myCar2 = new Sedan(6); // public 생성자 호출 가능
myCar2.move(); // protected 메소드 호출 가능
myCar2.sedanMove(); // public 메소드 호출가능
}
}