Java

[Java] 좔상 클래슀

μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 20. 02:55
λ°˜μ‘ν˜•

β–Ά 좔상 클래슀 κ΅¬ν˜„ν•˜κΈ°

μž‘μ„±ν•΄λ³΄λ©΄ μ €λ ‡κ²Œ 였λ₯˜κ°€ λœ¬λ‹€. 였λ₯˜μ˜ ν•΄κ²° 방법은

이 λ‘˜ 쀑 ν•˜λ‚˜μΈλ°, μš°λ¦¬λŠ” abstract μ˜ˆμ•½μ–΄λ₯Ό λ°°μš°κ³ μžˆμœΌλ‹ˆκΉŒ abstractλ₯Ό μž…λ ₯ν•΄λ³Έλ‹€.

좔상 λ©”μ„œλ“œκ°€ μ†ν•œ 클래슀λ₯Ό 좔상 클래슀둜 μ„ μ–Έν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

였λ₯˜ ν•΄κ²° !

​

 

​

β–Ά 좔상 클래슀 상속 λ°›κΈ°

였λ₯˜λ₯Ό ν•΄κ²°ν•˜λŠ” 방법

- 좔상 λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•  것

- DeskTop도 좔상 클래슀둜 λ§Œλ“€ 것

​

좔상 클래슀λ₯Ό 상속받은 ν•˜μœ„ ν΄λž˜μŠ€λŠ” κ΅¬ν˜„λ˜μ§€ μ•Šμ€ 좔상 λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•΄μ•Ό ꡬ체적인 ν΄λž˜μŠ€κ°€ λœλ‹€.

였λ₯˜ 뢀뢄에 마우슀λ₯Ό λŒ€κ³  Add unimplemented methods μ˜΅μ…˜μ„ λˆŒλŸ¬μ„œ λ‚˜λ¨Έμ§€ μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ³΄μž.

​

좔상 λ©”μ„œλ“œ κ΅¬ν˜„ν•˜κΈ°

-4~12행은 μƒμœ„ 클래슀인 Computer ν΄λž˜μŠ€μ— ν¬ν•¨λœ 좔상 λ©”μ„œλ“œμΈ display()와 typing()을 μž¬μ •μ˜ν•˜λŠ” 뢀뢄이닀. 이 λͺΈμ²΄ 뢀뢄에 μ›ν•˜λŠ” μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄ λœλ‹€.

 

NoteBook 클래슀

이 ν΄λž˜μŠ€μ—μ„œλŠ” 상속받은 좔상 λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•˜μ§€ μ•Šκ³  display() ν•˜λ‚˜λ§Œ κ΅¬ν˜„ν–ˆλ‹€.

κ·ΈλŸ¬λ―€λ‘œ NoteBook ν΄λž˜μŠ€λŠ” 좔상 λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜ κ°€μ§€κ³  있기 λ•Œλ¬Έμ— 좔상 ν΄λž˜μŠ€κ°€ λœλ‹€.

 

MyNoteBook 클래슀 κ΅¬ν˜„ν•˜κΈ°

-λͺ¨λ“  좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œ ν΄λž˜μŠ€μ—” abstract μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

 

β–Ά λͺ¨λ“  좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œ ν΄λž˜μŠ€μ— abstract μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄?

μƒμ„±ν•΄μ„œ μ‚¬μš©ν•  λͺ©μ μ΄ μ•„λ‹Œ μƒμ†λ§Œμ„ μœ„ν•΄ λ§Œλ“  좔상 클래슀면 new μ˜ˆμ•½μ–΄λ‘œ μΈμŠ€ν„΄μŠ€ 생성 μ•ˆλ¨.

​

​

​

λ‚˜ 혼자 μ½”λ”©) ν…ŒμŠ€νŠΈ 클래슀인 CarTest.java의 좜λ ₯ ν™”λ©΄κ³Ό 같이 좜λ ₯λ˜λ„λ‘ Car, Bus, AutoCar 클래슀λ₯Ό 직접 κ΅¬ν˜„ν•΄λ³΄λΌ.

<쑰건>

Car 클래슀 : run( ), refuel( ), stop( )

Bus 클래슀 : takePassenger( )

AutoCar 클래슀 : load( )

​

<κ³Όμ •>

​

1. CarTest ν΄λž˜μŠ€μ— 였λ₯˜κ°€ μžˆλŠ”κ±Έ 확인.

package chapter9.step1;

public class CarTest {
	public static void main(String[] args) {

		Bus bus = new Bus();
		AutoCar autoCar = new AutoCar();
		
		bus.run();
		autoCar.run();
		
		bus.refuel();
		autoCar.refuel();
		
		bus.takePassenger();
		autoCar.load();
		
		bus.stop();
		autoCar.stop();			
	}

}

 

 

2. Bus의 였λ₯˜ 뢀뢄에 마우슀λ₯Ό λŒ€λ³΄λ©΄ 'Create class Bus' 라고 λœ¬λ‹€. 눌러보자

​

​

3. AutoCar도 Bus와 λ˜‘κ°™μ΄ ν•œλ‹€.

​

​

4. Car 클래슀λ₯Ό λ§Œλ“€μ–΄μ„œ Bus, AutoCar ν΄λž˜μŠ€μ— 각각 상속해쀀닀

​

​

5. Car 클래슀λ₯Ό 좔상 클래슀둜 λ§Œλ“€κ³  μœ„μ— 쑰건처럼 run( ), refuel( )은 좔상 λ©”μ„œλ“œλ‘œ λ§Œλ“€μž

package chapter9.step1;

public abstract class Car {

	public abstract void run();
	public abstract void refuel();
	public void stop() {
		System.out.println("μ°¨κ°€ 멈μΆ₯λ‹ˆλ‹€.");
	}
}

 

 

6. Bus ν΄λž˜μŠ€μ— 좔상 λ©”μ„œλ“œ λ‚΄μš©μ„ λ©”κΎΈμž. (run( ), refuel( )은 좔상 λ©”μ„œλ“œ)

package chapter9.step1;

public class Bus extends Car{

	public void takePassenger() {
		System.out.println("μŠΉκ°μ„ λ²„μŠ€μ— νƒœμ›λ‹ˆλ‹€.");
	}

	@Override
	public void refuel() {
		System.out.println("μ²œμ—° κ°€μŠ€λ₯Ό μΆ©μ „ ν•©λ‹ˆλ‹€.");
	}
	
	public void run() {
		System.out.println("λ²„μŠ€κ°€ λ‹¬λ¦½λ‹ˆλ‹€.");
	}
}

 

 

7. AutoCar ν΄λž˜μŠ€λ„ λ˜‘κ°™μ΄ λ‚΄μš©μ„ λ©”κΎΈμž. (run( ), refuel( )은 좔상 λ©”μ„œλ“œ)

package chapter9.step1;

public class AutoCar extends Car{

    public void load() {
		System.out.println("짐을 μ‹£μŠ΅λ‹ˆλ‹€.");
	}

	@Override
	public void refuel() {
		System.out.println("휘발유λ₯Ό μΆ©μ „ν•©λ‹ˆλ‹€.");
	}

    @Override
	public void run() {
		System.out.println("μ°¨κ°€ λ‹¬λ¦½λ‹ˆλ‹€.");		
	}
}

 

 

8. 이제 였λ₯˜κ°€ 없어짐. 좜λ ₯ν•΄λ³΄μž

package chapter9.step1;

public class CarTest {
	public static void main(String[] args) {

		Bus bus = new Bus();
		AutoCar autoCar = new AutoCar();
		
		bus.run();
		autoCar.run();
		
		bus.refuel();
		autoCar.refuel();
		
		bus.takePassenger();
		autoCar.load();
		
		bus.stop();
		autoCar.stop();
	}

}

 

λ°˜μ‘ν˜•