์ธํฐํ์ด์ค
์ผ์ข ์ ์ถ์ ํด๋์ค๋ก interface ํค์๋๋ฅผ ํตํด ์ ์ธํ๊ณ ,
์์์ implements ํค์๋๋ฅผ ํตํด ์ผ๋ฐ ํด๋์ค์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ธํฐํ์ด์ค๋ ์์ฒด๋ก๋ ๊ฐ์ฒด ์์ฑ์ด ๋ถ๊ฐ๋ฅํ๊ณ ๋ค์ค์์์ด ๊ฐ๋ฅํ๋ค.
// ์ธํฐํ์ด์ค ์ ์
interface Animal {
void makeSound(); // ์ถ์ ๋ฉ์๋
void move(); // ์ถ์ ๋ฉ์๋
}
// ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค
class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("๋ฉ๋ฉ");
}
@Override
public void move() {
System.out.println("๊ฐ์์ง๊ฐ ๋ฌ๋ฆฐ๋ค");
}
}
// ๋ค๋ฅธ ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค
class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("์ผ์น");
}
@Override
public void move() {
System.out.println("๊ณ ์์ด๊ฐ ์ ํํ๋ค");
}
}
public class InterfaceExample {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
dog.move();
Animal cat = new Cat();
cat.makeSound();
cat.move();
}
}
์ถ์ํด๋์ค
์ถ์๋ฉ์๋๋ฅผ ํฌํจํ ํด๋์ค๋ก ์์์ ํตํด์ ๋ฏธ์์ฑ๋ฉ์๋๋ฅผ ์์ ํด๋์ค์์ ์์ฑํ๋ค.
์ถ์ํด๋์ค๋ ์์์ ์ํ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
// ์ถ์ ํด๋์ค ์ ์
abstract class Animal {
abstract void makeSound(); // ์ถ์ ๋ฉ์๋
void sleep() { // ๊ตฌํ๋ ๋ฉ์๋
System.out.println("์ ์๋ ๋๋ฌผ");
}
}
// ์ถ์ ํด๋์ค ์์๋ฐ์ ๊ตฌ์ฒด ํด๋์ค
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("๋ฉ๋ฉ");
}
}
// ์ถ์ ํด๋์ค ์์๋ฐ์ ๋ ๋ค๋ฅธ ๊ตฌ์ฒด ํด๋์ค
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("์ผ์น");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
dog.sleep();
Animal cat = new Cat();
cat.makeSound();
cat.sleep();
}
}
๊ณตํต์ : ๊ฐ์ฒด ์์ฑ์ด ๋ถ๊ฐ๋ฅํจ, ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ํด๋์ค์์ ๊ตฌํํด์ผํจ
์ฐจ์ด์ : ์ฌ์ฉํ๋ ํค์๋, ์ถ์ ํด๋์ค๋ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ธํฐํ์ด์ค๋ ๋ฉ์๋ ์ ์ธ๋ง ๊ฐ๋ฅ
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๊ฐ์ฒด ์งํฅ๊ณผ ์ ์ฐจ ์งํฅ์ ํน์ง๊ณผ ์ฐจ์ด์ (0) | 2022.01.11 |
---|---|
[JAVA] JAVA์ ๊ฐ๋ ๊ณผ ํน์ง (0) | 2022.01.11 |
[์๋ฐ] DAO, DTO์ ์ญํ ๊ณผ ๊ด๊ณ (0) | 2021.08.18 |
[์๋ฐ] String๊ณผ StringBuffer์ ์ฐจ์ด์ (0) | 2021.08.18 |
[์๋ฐ] ์ค๋ฒ๋ก๋ฉ(Overloading)๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding) (0) | 2021.08.18 |