티스토리 뷰

[주제]

- 클래스의 상속 방식, Over Ride



[중요]

1. 상속

- 자식 클래스의 생성자가 호출될 때 부모 클래스의 생성자가 먼저 호출됨

- 상속 방법: 클래스 오른쪽에 'extend 부모 클래스이름' 추가

- 클래스는 다중 상속 불가

- 인터페이스는 다중 상속 가능


2. Over Ride

- 기존에 사용되는 메소드를 동일한 이름으로 내용만 재정의

- 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것을 의미

- 자식 클래스에서 'super' 사용 시 부모 클래스의 메소드를 사용



[소스]

■ carClass.java

package sample03.Car;
 
public class carClass {
    protected int speed;    // 'protected' 자식 클래스는 사용 가능
    
    public carClass() {
        speed = 0;
        System.out.println("carClass 생성자");
    }
    
    public carClass(int speed) {
        this.speed = speed;
    }
    
    public void accele() {
        speed = speed + 5;
    }
    
    public void brake() {
        speed = speed - 5;
    }
    
    public void stop() {
        speed = 0;
    }
    
    public void disp() {
        System.out.println("현재 속도 = " + speed);
    }
}
cs



■ CarA.java

package sample03.Cars;
 
import sample03.Car.carClass;
 
public class CarA extends carClass{
/*
 * [상속]
 * 자식 클래스의 생성자가 호출될 때 부모 클래스의 생성자가 먼저 호출됨
 * 상속 방법: 클래스 오른쪽에 'extend 부모 클래스이름' 추가
 * - 다중 상속 불가
 */
    
    public CarA() {
        System.out.println("CarA 생성자");
    }
    
    public void hybrid() {
        System.out.println("hybrid Car");
    }
}
cs



■ CarB.java

package sample03.Cars;
 
public class CarB extends CarA {
    public CarB () {
        super();    // 부모 클래스의 생성자 호출
    }
    
    public void openRoop() {
        System.out.println("open Car");
    }
 
/*
 * [Over Ride]
 * 메소드의 재정의
 * 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것을 의미
 * 
 * [자식 클래스에 부모 클래스에 사용된 동일한 메소드를 갖고 있을 경우]
 * 'super' 사용 시 부모 클래스의 메소드를 사용
 * 'this' 사용 시 자신의 메소드를 사용
 */
    public void stop() {
        super.stop();
        System.out.println("CarB stop()");
        
        speed = 123;
    }
}
cs



■ mainClass.java

package sample03;
 
import sample03.Car.carClass;
import sample03.Cars.CarA;
import sample03.Cars.CarB;
 
public class mainClass {
 
    public static void main(String[] args) {
        carClass cclsbase = new carClass();
        cclsbase.accele();
        cclsbase.brake();
        cclsbase.stop();
        cclsbase.disp();
        
        CarA cclsA = new CarA();
        cclsA.accele();
        cclsA.accele();
        
        cclsA.brake();
        cclsA.disp();
        
        CarB cclsB = new CarB();
        cclsB.accele();
    }
}
cs




■ 실행결과



[첨부 파일]

carClass.java


CarA.java


CarB.java


mainClass.java


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함