프로그래밍 언어/Java(연습)
클래스(상속), Over Ride
얗마
2016. 5. 9. 21:46
[주제]
- 클래스의 상속 방식, 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 |
■ 실행결과
[첨부 파일]