<aside> πŸ’‘

좔상 ν΄λž˜μŠ€μ™€ 좔상 λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©ν•˜λŠ” μžλ°” ν‚€μ›Œλ“œ

</aside>

Abstract Class

좔상 클래슀, 직접 객체화 될 수 μ—†λŠ” 클래슀

abstract class Parent{
	public void money(){
		System.out.println("μƒν™œλΉ„");
	}
}

class Child extends Parent{
	public Child(){
		System.out.println("Child);
	}
}

public class TestAbstract(){
	public static void main(){
		//Parent p = new Parent(); //abstract class μ΄λ―€λ‘œ 객체 생성 λΆˆκ°€
		
		Child c = new Child();
		c.money();
	}
}

Child 클래슀의 λΆ€λͺ¨ 클래슀 ParentλŠ” abstract ν΄λž˜μŠ€μ΄λ―€λ‘œ 직접 객체λ₯Ό 생성할 수 μ—†κ³ , μžμ†μ—κ²Œ μƒμ†ν•˜μ—¬ μžμ† 클래슀의 객체λ₯Ό 생성해야 ν•œλ‹€.

abstract Method

좔상 λ©”μ„œλ“œ, κ΅¬ν˜„λΆ€ 없이 μ„ μ–Έλœ λ©”μ„œλ“œ

abstract MethodλŠ” μžμ‹ν΄λž˜μŠ€μ—κ²Œ method의 κ΅¬ν˜„μ„ κ°•μ œν•œλ‹€.

abstract MethodλŠ” abstract Classμ—μ„œλ§Œ μž‘μ„±ν•  수 μžˆλ‹€.

μžμ‹ ν΄λž˜μŠ€λŠ” abstract Methodλ₯Ό λ°˜λ“œμ‹œ κ΅¬ν˜„ν•΄μ•Όν•œλ‹€(Override)

κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μžμ‹ 클래슀 λ˜ν•œ abstract classκ°€ λ˜μ–΄μ•Ό ν•œλ‹€.

abstract class Parent{
	public void eat() {
		System.out.println("λ¨Ήλ‹€");
	}
	public void sleep() {
		System.out.println("μžλ‹€");
	}
	// μžμ‹μ—κ²Œ κ΅¬ν˜„μ„ κ°•μ œ => ν‘œμ€€ν™”
	public abstract void study(String subject);
}

class Child1{
	@Override//λΆ€λͺ¨ 클래슀의 abstract methodλ₯Ό μ˜€λ²„λΌμ΄λ”©
	public void study(String subject){
		System.out.println("Child1 " + subject + " κ³΅λΆ€ν•˜λ‹€");
	}
}

abstract class Child2(){ //abstract methodλ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„μ„œ abstract class이닀.
}