Car 클래스 (부모)
package ex4_inheritance;
public class Car {
public void ride() {
System.out.println("달립니다.");
}
}
Bus 클래스 (Car 클래스의 자식 클래스)
package ex4_inheritance;
public class Bus extends Car{
int peopleNum; // 승객수
public Bus(int peopleNum) {
this.peopleNum = peopleNum;
}
public void takePerson() {
System.out.println("승객이 버스에 탑승했습니다.");
peopleNum++;
System.out.println("지금까지 탑승한 승객은 "+peopleNum+"명입니다.");
}
}
SchoolBus 클래스 (Bus 클래스의 자식 클래스)
package ex4_inheritance;
public class SchoolBus extends Bus{
public SchoolBus(int peopleNum) {
//super : 부모클래스
super(peopleNum); //부모클래스의 생성자
//부모의 생성자가 기본생성자라면 생략이 가능
//부모의 생성자가 파라미터를 받는다면 생략이 불가능
}
@Override // @ : 어노테이션 주석의 일종
public void takePerson() {
super.takePerson(); //부모클래스의 takePerson() 호출
}
@Override
public void ride() { //Car클래스의 ride 오버라이딩
System.out.println("시속 50km/h로 천천히 달립니다.");
}
}
Main 클래스
package ex4_inheritance;
public class CarMain {
public static void main(String[] args) {
SchoolBus sb = new SchoolBus(10);
sb.takePerson();
sb.ride();
}
}
Book 클래스 (부모 클래스)
package ex6_final;
public class Book {
//final 키워드는 상수를 뜻함
//상수 : 한번 초기화 한 후 다시 값을 대입할 수 없음
//클래스에 final을 쓸 경우 상속의 마지막 클래스임을 의미
//어떠한 클래스도 final 클래스의 자식 클래스가 될 수 없음
String title;
public /*final을 붙일경우 Comic 클래스는 상속받지 못함*/ Book(String title) {
this.title = title;
}
//final 메서드
//상속은 받을 수 있지만 오버라이딩 할 수 없음
public final void info_title() {
System.out.println("책의 제목은 : "+title+"입니다.");
}
}
Comic 클래스 (자식 클래스)
package ex6_final;
public class Comic extends Book {
boolean isColor;
public Comic(String title, boolean isColor) {
super(title);
this.isColor = isColor;
}
//info_title 메서드는 Comic 클래스에서 오버라이딩 불가능
public void info_color() {
if(isColor)
System.out.println("이 만화책은 컬러입니다.");
else
System.out.println("이 만화책은 흑백입니다.");
}
}
Main 클래스
package ex6_final;
public class BookMain {
public static void main(String[] args) {
Comic c = new Comic("원피스", false);
c.info_title();
c.info_color();
}
}