๐ ์ถ์ํด๋์ค : ๋ถ๋ชจ ํด๋์ค๋ ์ ๊ณตํ์ง๋ง, ์ค์ ์์ฑ๋๋ฉด ์ ๋๋ ํด๋์ค
๐ ์ธํฐํ์ด์ค : ์์ ์ถ์ ํด๋์ค๋ก, ์คํ ๋ก์ง์ ์ ํ ๊ฐ์ง๊ณ ์์ง ์์ ๋ชจ๋ ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋์ธ ์ถ์ ํด๋์ค
์ถ์ํด๋์ค ์ ์ธ๋ฒ
abstract class abstractClass {...}
: ํด๋์ค๋ฅผ ์ ์ธํ ๋ ์์ ์ถ์์ด๋ผ๋ ์๋ฏธ์ abstract ํค์๋๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
์ถ์ํด๋์ค ํน์ง
- ์ง์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ๋ชปํ๋ค.
- ์ถ์ ๋ฉ์๋๊ฐ ํ๋๋ผ๋ ์๋ ํด๋์ค๋ ์ถ์ ํด๋์ค๋ก ์ ์ธํด์ผ ํ๋ค.
์ถ์ ๋ฉ์๋ ์ ์ธ๋ฒ
public abstract void abstractMethod();
: ๋ฉ์๋ ์์ ์ถ์์ด๋ผ๋ ์๋ฏธ์ abstract ํค์๋๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
์ถ์ ๋ฉ์๋ ํน์ง
- ๋ฐ๋ ๋ถ๋ถ์ด ์๋ค.
- ์์๋ฐ๋ ์์ ํด๋์ค๊ฐ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ ์ํ๋ฉด ์ค๋ฅ ๋ฐ์
๐ ์ถ์ ํด๋์ค, ๋ฉ์๋ ์์ ์ฝ๋
// ์ถ์ ํด๋์ค ์ ์
abstract class Animal {
// ์ถ์ ๋ฉ์๋ ์ ์ - ๋ฐ๋ ์กด์ฌX
public abstract void sound();
//์ผ๋ฐ ๋ฉ์๋ : ๋ชจ๋ ์์ ํด๋์ค์์ ๋์ผํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
public void sleep() {
System.out.println("Animal Sleep");
}
}
// ๊ตฌ์ฒด ํด๋์ค: Animal์ ์์๋ฐ์ ์ถ์ ๋ฉ์๋ ๊ตฌํ
class Dog extends Animal {
@Override // ์์ ํด๋์ค์์ ๋ถ๋ชจ์ ์ถ์๋ฉ์๋ ์ฌ์ ์
public void sound() {
System.out.println("Bark");
}
}
// ๊ตฌ์ฒด ํด๋์ค: Animal์ ์์๋ฐ์ ์ถ์ ๋ฉ์๋ ๊ตฌํ
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Meow");
}
}
// ๋ฉ์ธ ํด๋์ค
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.sound(); // ์ถ๋ ฅ: Bark
Animal cat = new Cat();
cat.sound(); // ์ถ๋ ฅ: Meow
cat.sleep(); // ์ถ๋ ฅ: Animal Sleep
}
}
๐ ์์ ์ถ์ ํด๋์ค : ๋ชจ๋ ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋์ธ ์ถ์ ํด๋์ค
- ์ฝ๋๋ฅผ ์คํํ ๋ฐ๋ ๋ถ๋ถ์ด ์ ํ ์๋ค. (์คํ๋ก์ง ์กด์ฌ x)
- ๋คํ์ฑ์ ์ํ ๋ถ๋ชจํ์ ์ผ๋ก์จ ๊ป๋ฐ๊ธฐ ์ญํ ๋ง ์ ๊ณต
- ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
- ์์์ ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ผ ํ๋ค.
๐ ์์ ์ถ์ ํด๋์ค ์์ ์ฝ๋
public abstract class AbstractAnimal {
public abstract void sound();
public abstract void move();
}
๐ ์ธํฐํ์ด์ค : ์๋ฐ์์ ์์ ์ถ์ ํด๋์ค๋ฅผ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ ๊ฐ๋
- ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ ๋ชจ๋ public, abstract์ด๋ค.
- ๋ฉ์๋์ oublic abstract๋ฅผ ์๋ตํ ์ ์๊ณ , ์๋ต์ด ๊ถ์ฅ๋๋ค.
- ๋ค์ค ๊ตฌํ(๋ค์ค ์์)์ ์ง์ํ๋ค.
- ์ธํฐํ์ด์ค๊ฐ ๋ชจ๋ ์ถ์ ๋ฉ์๋๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ ์์ ํด๋์ค์์ ํด์ผ ํ๋ฏ๋ก ๋ค์ด์๋ชฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ๊ตฌํ์ ํ๋๋ง ํ๋ฉด ๋๋ค.
์ธํฐํ์ด์ค ์ ์ธ๋ฒ
: class๊ฐ ์๋๋ผ interface ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
//class๊ฐ ์๋ interface ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ
public interface InterfaceAnimal {
void sound(); // puiblic abstract ์๋ต๋ ํํ
void move();
}
์ธํฐํ์ด์ค์ ๋ฉค๋ฒ ๋ณ์
: ์ธํฐํ์ด์ค์์ ๋ฉค๋ฒ ๋ณ์๋ public, static, final์ด ๋ชจ๋ ํฌํจ๋์๋ค๊ณ ๊ฐ์ฃผ๋๋ค.
public interface InterfaceMath {
double PI = 3.14; //public static final double PI = 3.14
}
- final ์ฌ์ฉ์ผ๋ก, ๊ณ ์น ์ ์๋ ์์
โ๏ธ ์์๊ณผ ๊ตฌํ
- ์์ : ๊ธฐ์กด ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ.
- ๊ตฌํ : ์ธํฐํ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋์ค๊ฐ ํน์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ผ๋ก, ํด๋์ค์ ๋ฌ๋ฆฌ ์ค์ ๊ตฌํ์ ๊ตฌํํด๋์ค์์ ์ด๋ฃจ์ด์ง๊ธฐ์ ๋ถ๋ชจ์ ์ธํฐํ์ด์ค ๊ธฐ๋ฅ์ ์์์ด ์์๋ฐ์ ๋๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค๊ณ ํํํ๋ค.
โ๏ธ ์์๊ณผ ๊ตฌํ์ ๋์์ ํ๋ ๊ฒฝ์ฐ
: extends๋ฅผ ํตํ ์์์ ํ๋๋ง ํ ์ ์๊ณ , implement๋ฅผ ํตํ ์ธํฐํ์ด์ค๋ ๋ค์ค ๊ตฌํ ๊ฐ๋ฅ.
- extends๊ฐ ๋จผ์ ๋์์ผ ํ๋ค.
- ๋ค์ค ๊ตฌํ์ ๊ฒฝ์ฐ " , " ๋ฅผ ์ด์ฉํด์ ๊ตฌ๋ถ
public class Bird extends Animal implements Dog, Cat { ... }
'Language > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋ฉ๋ชจ๋ฆฌ ์์ญ (0) | 2024.08.25 |
---|---|
[JAVA] ์ค๋ ๋(Thread) ์๋ฏธ์ ์ฌ์ฉ๋ฒ (4) | 2024.08.24 |
[JAVA] static์ ์๋ฏธ์ ์ฌ์ฉ๋ฒ (0) | 2024.08.19 |
[JAVA] ๊ฐ์ฒด(Object)๋? (0) | 2024.08.16 |
[JAVA] ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ 4๊ฐ์ง ํน์ง - ์บก์ํ, ์์์ฑ, ๋คํ์ฑ, ์ถ์ํ (0) | 2024.08.16 |