1. μΆμ ν΄λμ€
- μΆμ ν΄λμ€: μ€μ²΄ ν΄λμ€λ€μ 곡ν΅μ μΈ νΉμ±μ μΆμΆν΄μ μ μΈν ν΄λμ€, μ€μ²΄ ν΄λμ€μ λΆλͺ¨ κ΄κ³λ‘ ꡬνλμ΄ μμμ κ΄κ³κ° λλ€.
μμ±ν΄μΌν λ©μλκ° λμΌνκ³ , μ΄λ¦μ΄ ν΅μΌν΄μΌνλ€λ©΄ abstract classλ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
public abstract class Parent{...} // abstract μ μΈ
public class Child extends Parent{...} // abstract μμ
//------------------------------------------------------
/* μλ¨!!
Parent parent = new Parent();
*/
μΆμ ν΄λμ€λ new μ°μ°μλ₯Ό ν΅ν΄μ κ°μ²΄λ₯Ό λ§λ€μ§ λͺ»νκ³ , μμμ ν΅ν΄μλ§ μμ ν΄λμ€λ₯Ό λ§λ€ μ μλ€. μμ κ°μ²΄κ° μμ± λ λ, super();λ₯Ό ν΅ν΄μ μΆμ ν΄λμ€ μμ±μλ₯Ό νΈμΆν μ μλ€.
// abstract class
public abstract class Animal {
private String person;
public Animal(String person) {
this.person = person;
}
public void feed() {
System.out.println("μμμ μ€λλ€.");
}
public void clean() {
System.out.println("μ»κΉλλ€.");
}
}
// μμ class
public class Cat extends Animal{
public Cat(String person){
super(person);
}
public void groom(){
System.out.println("그루λ°ν©λλ€.");
}
}
// μ€ν class
public static void main(String[] args) {
//Animal animal = new Animal();
Cat cat = new Cat("νκΈΈλ");
cat.feed();
cat.clean();
cat.groom();
}
2. μΆμ λ©μλμ μ¬μ μ
: μΆμ λ©μλλ abstractμ ν¨κ» λ©μλ μ μΈλΆμλ§ μκ³ body λΆλΆμ κ°κ³ μμ§ μλλ€. μΆμ λ©μλκ° μλλ°, μμμ λ°μ ν μΆμ λ©μλλ₯Ό μ¬μ μ νμ§ μμ μμλ μλ¬κ° λ°μνκ² λλ€.
μ¦, μΆμ ν΄λμ€ μ€κ³μ νμ ν΄λμ€μ λ°λμ κ°μ νκ³ μΆμ λ©μλκ° μλ€λ©΄ μΆμ λ©μλλ₯Ό μ μΈν΄μ€λ€.
// abstract class
public abstract class Animal {
private String person;
public Animal(String person) {
this.person = person;
}
public void feed() {
System.out.println("μμμ μ€λλ€.");
}
public void clean() {
System.out.println("μ»κΉλλ€.");
}
public abstract void sound(); // μΆμ λ©μλ
}
// μμ class
public class Cat extends Animal{
public Cat(String person){
super(person);
}
public void groom(){
System.out.println("그루λ°ν©λλ€.");
}
@Override // μΆμ λ©μλ
public void sound(){
System.out.println("μΌμΉ");
}
}
public class example{
public static void main(String args[]){
Cat cat = new Cat();
cat.sound();
//----μλ νμ
λ³ν------
Animal animal = new Cat();
animal.sound();
//----------
animalSound(new Cat());
}
public static void animalSound(Animal animal){
animal.sound();
}
}
3. μΈν°νμ΄μ€
: κ°λ° μ½λμ κ°μ²΄κ° μλ‘ ν΅μ νλ μ μ μν μ νλ€.
public interface μ΄λ¦{...}
μΈν°νμ΄μ€λ μμ νλμ μΆμ λ©μλ λ§μ κ΅¬μ± λ©€λ²λ‘ κ°μ§λ€.
μμ νλλ μ€ν μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ μΈμ€ν΄μ€, μ μ νλλ‘ μ μΈν μ μλ€.
μ¦, static final μΌλ‘ μ μΈμ΄ λλ κ²μ΄λ€. ( static final μ μλ΅νλλΌλ, μ»΄νμΌ κ³Όμ μμ μλμΌλ‘ λΆμ¬μ§κ² λλ€.)
μΆμ λ©μλλ λ§μ°¬κ°μ§λ‘ static μ μλ΅ν΄λ μ»΄νμΌ κ³Όμ μμ μλμ μΌλ‘ λΆμ¬μ§κ² λλ€.
- μΆμ λ©μλ: λ¦¬ν΄ νμ , λ©μλ μ΄λ¦, 맀κ°λ³μλ§ κΈ°μ
public interface Behavior{
public int a = 2; // static final μλ΅
public void click(); // μΆμ λ©μλ static μλ΅ν΄λ μ»΄νμΌ μ μλμΌλ‘ μμ±
public void eat();
}
4. μΈν°νμ΄μ€ ꡬν ν΄λμ€
: ꡬν ν΄λμ€μμλ implements λ₯Ό ν΅ν΄μ interfaceλ₯Ό μμ λ°λλ€. μ΄ λ, ꡬν ν΄λμ€μμλ μΆμ λ©μλμ λμΌν μ΄λ¦, λ§€κ° νμ , λ¦¬ν΄ νμ μ κ°λ μ€μ²΄ λ©μλλ₯Ό κ°κ³ μμ΄μΌ νλ€.
public class Animal implements Behavior{
public void click(){
a++;
};
public void eat(){
a+=2;
};
}
ꡬν ν΄λμ€κ° μμ± λλ©΄ new μ°μ°λ‘ ꡬνλ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
Animal animal = new Animal(); // μΈν°νμ΄μ€ μ¬μ©ν κ²μ΄ μλ
Behavior behavoir = new Animal();
//-------------νΉμ------------
Behavoir behavoir;
behavoir = new Animal();
# λ€μ€ μΈν°νμ΄μ€ ꡬν
: μΈν°νμ΄μ€λ λΆλͺ¨ μμ κ°μ²΄ κ΄κ³μ λ¬λ¦¬ μ¬λ¬κ°μ§ μΈν°νμ΄μ€λ₯Ό ꡬνν μ μλ€.
public interface Behavior{
public int a = 2; // static final μλ΅
public void click(); // μΆμ λ©μλ static μλ΅ν΄λ μ»΄νμΌ μ μλμΌλ‘ μμ±
public void eat();
}
public interface Sound{
public void sound(); // μΆμ λ©μλ static μλ΅ν΄λ μ»΄νμΌ μ μλμΌλ‘ μμ±
}
public class Animal implements Behavior, Sound{
public void click(){
a++;
};
public void eat(){
a+=2;
};
public void sound(){
System.out.println("μ");
}
}
//-----------------------------------------------------------
public class Example{
public static void main(String args[]){
Animal animal = new Animal();
Behavoir behavior = animal;
Sound sound = animal;
}
# μΈν°νμ΄μ€ μ¬μ©
1. νλ
Sound sound = new Animal();
2. μμ±μ
public Example(Sound sound){
this.sound = sound;
}
//
Example example = new Example(new Animal());
3. λ©μλ λ΄ λ‘컬 λ³μ
public void exampleMethod(){
Behavior behavior = new Animal();
}
4. 맀κ°λ³μ
public void methodExam(Sound sound){
...}
[μΆμ²] νΌκ³΅μλ° P. 357~385