λ‘œμΌ“πŸΎ
article thumbnail
λ°˜μ‘ν˜•

 

μΆ”μƒν΄λž˜μŠ€λŠ” abstarctλ₯Ό μ‚¬μš©ν•˜κ³  μΈν„°νŽ˜μ΄μŠ€λŠ” interfaceλ₯Ό μ‚¬μš©ν•˜λ©΄ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ–Έμ œ μΆ”μƒν΄λž˜μŠ€λ₯Ό μ‚¬μš©ν•˜κ³  μ–Έμ œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ•Ό ν• κΉŒμš”? μ•„λ§ˆ λ§Žμ€ μ£Όλ‹ˆμ–΄ κ°œλ°œμžλΆ„λ“€μ΄ λͺ…μΎŒν•œ 닡을 내놓지 λͺ»ν•  것이라고 μƒκ°ν•©λ‹ˆλ‹€. μ € λ˜ν•œ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ μ μ ˆν•œ μ‚¬μš© μš©λ„λ₯Ό μΈμ§€ν•˜μ§€ λͺ»ν•œ 채 κ°œλ°œμ„ ν•΄μ™”μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΄λ²ˆμ— μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ μ•Œμ•„ 보고자 ν•©λ‹ˆλ‹€.

 

 

μΆ”μƒν΄λž˜μŠ€

 

μΆ”μƒν΄λž˜μŠ€λŠ” μΌλ°˜ν΄λž˜μŠ€μ™€ λ³„λ°˜ λ‹€λ₯Ό 것이 μ—†μŠ΅λ‹ˆλ‹€. 단지, 좔상 λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜μ—¬ 상속을 ν†΅ν•˜μ—¬ μžμ† ν΄λž˜μŠ€μ—μ„œ μ™„μ„±ν•˜λ„λ‘ μœ λ„ν•˜λŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λ―Έμ™„μ„± 섀계도라고도 ν‘œν˜„ν•©λ‹ˆλ‹€.

 

기본적으둜 μ•„λž˜ μ½”λ“œμ™€ 같이 μž‘μ„±ν•˜κ²Œ λ©λ‹ˆλ‹€.

public abstract class ν΄λž˜μŠ€μ΄λ¦„{
	public abstract void λ©”μ„œλ“œμ΄λ¦„();
}

 

상속을 μœ„ν•œ 클래슀이기 λ•Œλ¬Έμ— ν•„λ“œμ— λ”°λ‘œ 객체λ₯Ό 생성할 수 μ—†μŠ΅λ‹ˆλ‹€. 

package interface_abstract;

public class main{
	public static void main(String[] args) {
    	//λ§Œμ•½ μΆ”μƒν΄λž˜μŠ€λ₯Ό newμ—°μ‚°μžλ‘œ μƒμ„±ν•˜λ €λ©΄ μ—λŸ¬κ°€ λ°œμƒ
		creature c = new creature();//Cannot instantiate the type creature 였λ₯˜ λ°œμƒ
	}
}

 

λ˜ν•œ 좔상 λ©”μ„œλ“œκ°€ μ•„λ‹Œ 이상 상속 λ°›λŠ” ν΄λž˜μŠ€μ— 일반 λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. λ§Œμ•½ μΆ”μƒν΄λž˜μŠ€μ—μ„œ μΆ”μƒλ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν–ˆλ‹€λ©΄ λ°˜λ“œμ‹œ μƒμ†λ°›λŠ” ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©μ„ ν•΄μ£Όμ–΄μ•Όν•©λ‹ˆλ‹€. μ•„λž˜ μ½”λ“œλ₯Ό λ³΄μ‹œλ©΄ eatκ³Ό walk λ©”μ„œλ“œλŠ” 좔상 λ©”μ„œλ“œμ΄λ―€λ‘œ μƒμ†λ°›λŠ” ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©μ„ ν•΄μ£Όμ–΄μ•Όν•©λ‹ˆλ‹€.

package interface_abstract;

public abstract class creature {
	private String name;
	private String home;
	
	public creature(String name, String home) {
		this.name = name;
		this.home = home;
	}
	
	public abstract void eat();//μΆ”μƒλ©”μ„œλ“œ
	public abstract void walk();//μΆ”μƒλ©”μ„œλ“œ
	
	@Override
	public String toString() {
		return this.name + "은(λŠ”) " + this.home + "에 μ‚½λ‹ˆλ‹€.";
	}
}

 

human μΆ”μƒν΄λž˜μŠ€μ˜ λΆ€λͺ¨ν΄λž˜μŠ€μΈ creatureμ—μ„œ μΆ”μƒλ©”μ„œλ“œλ₯Ό μ„ μ–Έν•΄μ£Όμ—ˆκΈ° λ•Œλ¬Έμ— creature μΆ”μƒν΄λž˜μŠ€λ₯Ό μƒμ†λ°›λŠ” human μΆ”μƒν΄λž˜μŠ€μ— μ˜€λ²„λΌμ΄λ”© ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ§Œμ•½ μΆ”μƒλ©”μ„œλ“œκ°€ μ•„λ‹Œ μΌλ°˜λ©”μ„œλ“œλΌλ©΄ λ°˜λ“œμ‹œ μ˜€λ²„λΌμ΄λ”©μ„ 해쀄 ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

package interface_abstract;

public abstract class human extends creature{

	public human(String name, String home) {
		super(name, home);
	}
	
	@Override
	public void eat() {
		System.out.println("λ°₯을 λ¨ΉμŠ΅λ‹ˆλ‹€.");//μ˜€λ²„λΌμ΄λ”©μ„ λ°˜λ“œμ‹œ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.
	}
	
	@Override
	public void walk() {
		System.out.println("이쑱보행을 ν•©λ‹ˆλ‹€.");//μ˜€λ²„λΌμ΄λ”©μ„ λ°˜λ“œμ‹œ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.
	}
}

 

 

 

μΈν„°νŽ˜μ΄μŠ€

 

μΆ”μƒν΄λž˜μŠ€κ°€ λ―Έμ™„μ„± 섀계도라면 μΈν„°νŽ˜μ΄μŠ€λŠ” κΈ°λ³Έ 섀계도라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μΆ”μƒν΄λž˜μŠ€μ²˜λŸΌ λ‹€λ₯Έ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ”λ° 도움을 μ£Όμ§€λ§Œ 좔상 ν΄λž˜μŠ€μ™€ λ‹€λ₯΄κ²Œ 닀쀑상속(κ΅¬ν˜„)이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

public interface μΈν„°νŽ˜μ΄μŠ€μ΄λ¦„{
	public abstract void λ©”μ„œλ“œμ΄λ¦„();//μΆ”μƒλ©”μ„œλ“œ
	public void λ©”μ„œλ“œμ΄λ¦„();//μΌλ°˜λ©”μ„œλ“œ
}

 

μΈν„°νŽ˜μ΄μŠ€λŠ” μΆ”μƒν΄λž˜μŠ€μ™€ λ‹€λ₯΄κ²Œ μΆ”μƒλ©”μ„œλ“œλ“  μΌλ°˜λ©”μ„œλ“œλ“  λ°˜λ“œμ‹œ μ˜€λ²„λΌμ΄λ”©μ„ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. 

package interface_abstract;

public class messi extends human implements talkable, swimmable{

	public messi(String name, String home) {
		super(name, home);
	}
	
	@Override
	public void talk() {
		System.out.println("μž…μœΌλ‘œ 말을 ν•©λ‹ˆλ‹€.");
	}
    
//	implements둜 κ΅¬ν˜„ν•œ swimmable의 λ©”μ„œλ“œλ₯Ό μ£Όμ„μ²˜λ¦¬ν•˜μ˜€μ„ λ•Œ
//	The type messi must implement the inherited abstract method swimmable.swim() μ—λŸ¬κ°€ λ°œμƒ
//	@Override
//	public void swim() {
//		System.out.println("μžμœ ν˜•, ν‰ν˜• 등을 ν•©λ‹ˆλ‹€.");
//	}
}

 

 

μΆ”μƒν΄λž˜μŠ€ vs μΈν„°νŽ˜μ΄μŠ€

 

κ²°κ΅­ μΆ”μƒν΄λž˜μŠ€λ§ŒμœΌλ‘œλ„ μΆ©λΆ„νžˆ μΈν„°νŽ˜μ΄μŠ€μ˜ 역할을 λŒ€μ‹  ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그런데 μ™œ ꡳ이 2κ°€μ§€λ‘œ λ‚˜λˆ μ„œ μ‚¬μš©ν• κΉŒμš”? 이둠상 μΆ”μƒν΄λž˜μŠ€λ§ŒμœΌλ‘œ μΈν„°νŽ˜μ΄μŠ€ 역할을 λŒ€μ‹ ν•  순 μžˆμ§€λ§Œ μ‹€μ œλ‘œ κ°œλ°œμ„ ν•˜λ‹€λ³΄λ©΄ λ‘˜μ˜ μ‚¬μš©μš©λ„λŠ” λ‹€λ₯΄λ‹€λŠ” κ±Έ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ‚¬μš©μš©λ„μ˜ 차이점

μΆ”μƒν΄λž˜μŠ€λŠ” IS -A "~이닀."

μΈν„°νŽ˜μ΄μŠ€λŠ” HAS -A "~을 ν•  수 μžˆλŠ”"

 

μžλ°”μ˜ νŠΉμ„±μƒ ν•œ 개의 클래슀만 상속이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 클래슀의 ꡬ뢄을 μΆ”μƒν΄λž˜μŠ€ 상속을 톡해 ν•΄κ²°ν•˜κ³ , ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ ν•  수 μžˆλŠ” κΈ°λŠ₯듀에 λŒ€ν•΄μ„œλŠ” μ—¬λŸ¬ 개의 상속(κ΅¬ν˜„)이 κ°€λŠ₯ν•œ μΈν„°νŽ˜μ΄μŠ€λ‘œ κ΅¬ν˜„ν•©λ‹ˆλ‹€. 

 

μΆ”μƒν΄λž˜μŠ€ 말고 μ „λΆ€ μΈν„°νŽ˜μ΄μŠ€λ‘œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ©΄ μ•ˆλ˜λ‚˜? 라고 μƒκ°ν•˜μ‹€ μˆ˜λ„ μžˆλŠ”λ° μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 바와 같이 μΈν„°νŽ˜μ΄μŠ€λ§Œ μ΄μš©ν•˜μ—¬ 클래슀의 κΈ°λ³Έ ν‹€(κΈ°λŠ₯)을 κ΅¬μ„±ν•˜κ²Œ λœλ‹€λ©΄ μΈν„°νŽ˜μ΄μŠ€ λ‚΄μ˜ μ •μ˜ν•œ λͺ¨λ“  λ©”μ„œλ“œλ“€μ„ λ‹€μ‹œ μ˜€λ²„λΌμ΄λ”© ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μžˆμŠ΅λ‹ˆλ‹€. λΆˆν•„μš”ν•œ λ©”μ„œλ“œκΉŒμ§€ μ˜€λ²„λΌμ΄λ”© ν•΄μ•Ό ν•©λ‹ˆλ‹€. 

 

λ°˜λŒ€λ‘œ μΆ”μƒν΄λž˜μŠ€λ‘œλ§Œ 클래슀의 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ©΄ μ•ˆλ˜λ‚˜? 라고 μƒκ°ν•˜μ‹€ μˆ˜λ„ μžˆλŠ”λ° μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 바와 같이 μžλ°”λŠ” ν•˜λ‚˜μ˜ 클래슀만 상속할 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

λ”°λΌμ„œ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 적절히 μ„žμ–΄ κ°œλ°œμ„ ν•΄μ•Όν•©λ‹ˆλ‹€.

 

예제λ₯Ό λ³΄μ—¬λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

 

 

 

creature μΆ”μƒν΄λž˜μŠ€

package interface_abstract;

public abstract class creature {
	private String name;
	private String home;
	
	public creature(String name, String home) {
		this.name = name;
		this.home = home;
	}
	
	public abstract void eat();
	public abstract void walk();
	
	@Override
	public String toString() {
		return this.name + "은(λŠ”) " + this.home + "에 μ‚½λ‹ˆλ‹€.";
	}
}

인간과 동물 λͺ¨λ‘ 생λͺ…μ²΄λΌλŠ” 것을 κ΅¬ν˜„ν•œ creature μΆ”μƒν΄λž˜μŠ€μž…λ‹ˆλ‹€. 생λͺ…체라면 이름과 μ‚¬λŠ” 곳이 있고 λ¨Ήκ³  κ±·κΈ° λ•Œλ¬Έμ— eatκ³Ό walk μΆ”μƒλ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. toString 같은 경우 μ΅œμƒμœ„ 객체인 object ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ„œλ“œλ‘œ creatureλ©”μ„œλ“œμ—μ„œ λ‹€μ‹œ μ˜€λ²„λΌμ΄λ”© ν•˜μ˜€μŠ΅λ‹ˆλ‹€. object ν΄λž˜μŠ€λŠ” extendsλ₯Ό 톡해 μƒμ†ν•˜μ§€ μ•Šμ•„λ„ μžλ™μœΌλ‘œ μƒμ†λ©λ‹ˆλ‹€.

 

human μΆ”μƒν΄λž˜μŠ€

package interface_abstract;

public abstract class human extends creature{

	public human(String name, String home) {
		super(name, home);
	}
	
	@Override
	public void eat() {
		System.out.println("λ°₯을 λ¨ΉμŠ΅λ‹ˆλ‹€.");
	}
	
	@Override
	public void walk() {
		System.out.println("이쑱보행을 ν•©λ‹ˆλ‹€.");
	}
}

인간(human)은 creature μΆ”μƒν΄λž˜μŠ€λ‘œλΆ€ν„° 상속을 λ°›μŠ΅λ‹ˆλ‹€. human ν΄λž˜μŠ€μ—μ„œ eatκ³Ό walkλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 동물과 λ‹€λ₯΄κ²Œ 인간은 λ°₯을 ν•΄λ¨Ήκ³ , μ‚¬μ‘±λ³΄ν–‰μ΄λ‚˜ 헀엄이 μ•„λ‹Œ 이쑱보행을 톡해 κ±·κΈ° λ•Œλ¬Έμ΄μ£ .

 

animal μΆ”μƒν΄λž˜μŠ€

package interface_abstract;

public abstract class animal extends creature{

	public animal(String name, String home) {
		super(name, home);
	}
	
}

동물(animal) μΆ”μƒν΄λž˜μŠ€λŠ” creature μΆ”μƒν΄λž˜μŠ€λ‘œλΆ€ν„° 상속을 λ°›μŠ΅λ‹ˆλ‹€. λ™λ¬Όλ§ˆλ‹€ 사쑱보행을 ν• μˆ˜λ„ 있고, 이쑱보행을 ν•  μˆ˜λ„ μžˆμ–΄μ„œ animal ν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ”©μ„ ν•˜μ§€μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 또 동물은 μœ‘μ‹μΌ μˆ˜λ„ 있고 μ΄ˆμ‹μΌ μˆ˜λ„ 있기 λ•Œλ¬Έμ— μ˜€λ²„λΌμ΄λ”©μ„ ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 밑에 tigerν΄λž˜μŠ€μ™€ elephant ν΄λž˜μŠ€μ—μ„œ λ”°λ‘œ μ˜€λ²„λΌμ΄λ”©μ„ ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

messi 클래슀

package interface_abstract;

public class messi extends human implements talkable, swimmable{

	public messi(String name, String home) {
		super(name, home);
	}
	
	@Override
	public void talk() {
		System.out.println("μž…μœΌλ‘œ 말을 ν•©λ‹ˆλ‹€.");
	}
	
	@Override
	public void swim() {
		System.out.println("μžμœ ν˜•, ν‰ν˜• 등을 ν•©λ‹ˆλ‹€.");
	}
}

λ©”μ‹œλŠ” human μΆ”μƒν΄λž˜μŠ€λ₯Ό μƒμ†λ°›μŠ΅λ‹ˆλ‹€. 그리고 talkable, swimmable μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속(κ΅¬ν˜„)λ°›μŠ΅λ‹ˆλ‹€. λ©”μ‹œλŠ” μ‚¬λžŒμ΄κΈ°μ— 말을 ν•  μˆ˜λ„ 있고 μˆ˜μ˜μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 인간일 경우 μˆ˜μ˜μ„ ν•  λ•Œ μžμœ ν˜•μ΄λ‚˜ ν‰ν˜• 등을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

tiger 클래슀

package interface_abstract;

public class tiger extends animal implements swimmable{

	public tiger(String name, String home) {
		super(name, home);
	}

	@Override
	public void swim() {
		System.out.println("κ°œν—€μ—„μ„ ν•©λ‹ˆλ‹€.");
	}

	@Override
	public void eat() {
		System.out.println("μœ‘μ‹μ„ ν•©λ‹ˆλ‹€.");
	}

	@Override
	public void walk() {
		System.out.println("사쑱보행을 ν•©λ‹ˆλ‹€.");
	}

}

ν˜Έλž‘μ΄λŠ” animal μΆ”μƒν΄λž˜μŠ€λ‘œλΆ€ν„° 상속을 λ°›μŠ΅λ‹ˆλ‹€. ν˜Έλž‘μ΄λŠ” λ©”μ‹œμ™€ λ‹€λ₯΄κ²Œ 말은 ν•  수 없기에 수영 κ΄€λ ¨λœ swimmable μΈν„°νŽ˜μ΄μŠ€λ§Œ 상속(κ΅¬ν˜„)λ°›μŠ΅λ‹ˆλ‹€. ν˜Έλž‘μ΄λŠ” μœ‘μ‹μ΄λ―€λ‘œ eat λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©μ„ ν•΄μ£Όμ—ˆκ³  λ˜ν•œ 사쑱보행을 ν•˜κΈ° λ•Œλ¬Έμ— walk λ©”μ„œλ“œ λ˜ν•œ μ˜€λ²„λΌμ΄λ”© ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. λ©”μ‹œλŠ” μžμœ ν˜•μ„ ν•˜λŠ” 반면 ν˜Έλž‘μ΄λŠ” κ°œν—€μ—„μ„ 톡해 μˆ˜μ˜ν•˜λ―€λ‘œ swimmable μΈν„°νŽ˜μ΄μŠ€μ˜ swim λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

 

elephant 클래슀

package interface_abstract;

public class elephant extends animal{

	public elephant(String name, String home) {
		super(name, home);
	}

	@Override
	public void eat() {
		System.out.println("μ΄ˆμ‹μ„ ν•©λ‹ˆλ‹€.");
	}

	@Override
	public void walk() {
		System.out.println("사쑱보행을 ν•©λ‹ˆλ‹€.");
	}

}

코끼리도 ν˜Έλž‘μ΄μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ animal 클래슀λ₯Ό μƒμ†λ°›μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μˆ˜μ˜μ„ ν•  수 없기에(ν• μˆ˜λ„ μžˆκ² μ§€λ§Œ λͺ»ν•œλ‹€κ³  κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€.) swimmable μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속(κ΅¬ν˜„)받지 μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ 말도 ν•  수 μ—†κΈ° λ•Œλ¬Έμ— talkable μΈν„°νŽ˜μ΄μŠ€ λ˜ν•œ 상속(κ΅¬ν˜„)받지 μ•ŠμŠ΅λ‹ˆλ‹€.

 

talkable μΈν„°νŽ˜μ΄μŠ€

package interface_abstract;

public interface talkable {
	public void talk();
}

말 ν•  수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•œ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

 

swimmable μΈν„°νŽ˜μ΄μŠ€

package interface_abstract;

public interface swimmable {
	public void swim();
}

μˆ˜μ˜ν•  수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•œ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

 

main 클래슀

package interface_abstract;

public class main{

	public static void main(String[] args) {
		messi m = new messi("λ©”μ‹œ", "μ•„νŒŒνŠΈ");
		tiger t = new tiger("ν˜Έλž‘μ΄", "μ •κΈ€");
		elephant e = new elephant("코끼리", "μ΄ˆμ›");
				
		//λ©”μ‹œ
		String str1 = m.toString();
		System.out.println(str1);
		m.eat();
		m.walk();
		m.talk();
		m.swim();
		//ν˜Έλž‘μ΄
		System.out.println("---------------------");
		String str2 = t.toString();
		System.out.println(str2);
		t.eat();
		t.walk();
		t.swim();
		//코끼리
		System.out.println("---------------------");
		String str3 = e.toString();
		System.out.println(str3);
		e.eat();
		e.walk();
	}
}

 

μ‹€ν–‰κ²°κ³Ό

μΆ”μƒν΄λž˜μŠ€ μ‚¬μš© μ‹œκΈ° : 상속관계λ₯Ό μ­‰ 타고 μ˜¬λΌκ°”μ„ λ•Œ 같은 μ‘°μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν•˜λŠ” 데 κΈ°λŠ₯κΉŒμ§€ μ™„λ²½νžˆ λ˜‘κ°™μ€ κΈ°λŠ₯이 ν•„μš”ν•œ 경우

μΈν„°νŽ˜μ΄μŠ€ μ‚¬μš© μ‹œκΈ° : 상속관계λ₯Ό 쭉타고 μ˜¬λΌκ°”μ„ λ•Œ λ‹€λ₯Έ μ‘°μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν•˜λŠ”λ° 같은 κΈ°λŠ₯이 ν•„μš”ν•œ 경우 

 

그럼 이제 μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ 감이 μ˜€μ‹œλ‚˜μš”? 이상 μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

 

μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

 

conference

 

μžλ°” μΆ”μƒν΄λž˜μŠ€λž€?

μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ μš©λ„, 차이점, 곡톡점

μžλ°” μΈν„°νŽ˜μ΄μŠ€λž€?

μΆ”μƒν΄λž˜μŠ€ vs μΈν„°νŽ˜μ΄μŠ€ μ™œ μ‚¬μš©ν• κΉŒ?

λ°˜μ‘ν˜•
profile on loading

Loading...