1. μΆμν΄λμ€(abstract class)
- νλ μ΄μμ μΆμ λ©μλ ν¬ν¨νλ ν΄λμ€
- μ¦ μμ±λ λ©μλ, λ―Έμμ±λ λ©μλ λͺ¨λ κ°μ§ μ μμ <-> μΈν°νμ΄μ€λ λͺ¨λ λ©μλκ° μΆμλ©μλλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΄μΌ ν¨
- μ¬κΈ°μ μμ±λ λ©μλλ λ©μλ μμ { } μ€κ΄νΈκ° μλκ². => ꡬνλ κ²μΌλ‘ λ³Έλ€
- μΈμ€ν΄νΈλ₯Ό μμ±ν μ μλ€. μμ±μ μμ± ν λ New ν€μλ μΈ μ μλ€λ κ²μ
- μΆμ ν΄λμ€λ₯Ό μμ λ°μ ν΄λμ€λ λ―Έμμ±λ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν΄μΌ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
- μΆμλ©μλλ μ€λ²λΌμ΄λ©μ μ μ λ‘ νκΈ° λλ¬Έμ private μΌλ‘ μ μΈν μ μλ€.
abstract class Animal {
abstract void makeSound(); // μ€κ΄νΈ μμ΄ μΈλ―Έλ‘μ½λ‘ μΌλ‘ λλμΌ ν¨
void breathe() {
System.out.println("Breathe in, breathe out.");
}
}
class Dog extends Animal {
void makeSound() {
System.out.printIn("Bark");
}
}
μ μ½λ κΈ°λ°μΌλ‘ λ©μΈ μμ Animal a = new Animal(); μμ±ν μ μλ€
ꡬνμ΄ μ λ λ―Έμμ± ν΄λμ€μ΄κΈ° λλ¬Έμ΄λ€
Animal a = new Dog();
ν΄λΉ μ½λλ μ μ μλνλ€. μλνλ©΄ Dog ν΄λμ€κ°
Animal μμλ°μμ ꡬν νκΈ° λλ¬Έ
2. μΈν°νμ΄μ€(Interface)
- λͺ¨λ λ©μλκ° κ΅¬νλμ§ μμ μΆμν΄λμ€μ κ·Ήλ¨
- ν΄λμ€κ° μ¬μ©νλ λ©€λ² λ³μμ λ©μλμ μν νλ§ μ 곡
- class ν€μλ λμ Interface ν€μλ μ¬μ©
- μΈν°νμ΄μ€μ μμμ extends κ° μλ implements μ¬μ©
- μΈν°νμ΄μ€λ κ°μ²΄λ₯Ό μμ±ν μ μλ€
- μΈν°νμ΄μ€λ₯Ό μμ λ°μΌλ©΄ λͺ¨λ λ©μλλ₯Ό ꡬνν΄μΌ νλ€. <<<
01. λ€μ μλ° νλ‘κ·Έλ¨μ΄ μ€λ₯ μμ΄ μ€νλκΈ° μν΄ λ°μ€ μΉ λΆλΆμ νμν νλ‘κ·Έλ¨ μ½λλ?
abstract class Test {
int data = 100;
public abstract void printData();
}
class Inner {
Test test = new Test() {
public void printData() {
System.out.println(data);
}
}
public class Main {
public static void main(String[] args) {
Inner inner = new Inner();
___________printData();
}
}
μ λ΅ Inner.test
Inner class κ° κ°μ§κ³ μλ κ°μ²΄ testμ μ κ·Ό
04. λ€μ μΆμν΄λμ€λ₯Ό μ μν λ λ¬Έλ² μ€λ₯κ° λ°μνλ λΆλΆμ λͺ¨λ κ³ λ₯΄μμ€.
abstract class Person {
private int age; // 1
public String name // 2
abstract public void setAge(int age); // 3
abstract public void setName(String name){}; // 4
private int getAge() { // 5
return this.age;
}
abstract private String getName(); // 6
}
4 : μ€κ΄νΈκ° μμΌλ©΄ ꡬνλ κ²μΌλ‘ λ΄. μΆμλ©μλλ μ€κ΄νΈ μλ λ©μλ μνλ§ μ°κ³ ; μΌλ‘ λλμΌ ν¨
6 : μΆμλ©μλμλ private ν€μλ μΈ μ μλ€. μ? νμ ν΄λμ€μμ μμλ°μμ ꡬνν΄μΌ νκΈ° λλ¬Έμ λ¨
private ν λ©€λ²λ³μλ μΌλ° λ©μλλ μ¬μ© κ°λ₯νλ€.
05. λ€μ Java νλ‘κ·Έλ¨μ μ€ν κ²°κ³Όλ₯Ό μ°μμ€
Interface A {
int a = 2;
}
class B implements A {
int b;
B(int i) { b = i * a }
int getb() { return b; }
}
class Test {
public static void main(String args[]) {
int a = 3;
B b1 = new B(1);
System.out.println( b1.getb() );
}
}
μ λ΅ : 2
κ°λ¨νλ° ν·κ°λ¦Ό
λ³μ μ΄λ¦μ΄ κ°μ κ²½μ° main μμμ μ§μλ³μμ μΈν°νμ΄μ€ μμ λ³μ μ€ μ΄λ€ κ°μ μ°Έμ‘°ν΄μΌ νλμ§μ λ¬Έμ
a = 3 (main μμμ μ§μλ³μ)
μΈμ€ν΄νΈ b1 μ΄ κ°μ§ λ³μ a = 2, b = 1*2
μ 3μ΄ μλκ³ 2μΈκ°? ν΄λμ€ Bκ° μΈν°νμ΄μ€ Aλ₯Ό μμλ°μμ ꡬννμ¬ μΈμ€ν΄μ€ b1μ μμ±νκΈ° λλ¬Έμ b1 μ΄ κ°μ§κ³ μλ
a κ°μ μ¨μΌ ν¨.
07. λ€μ μΈν°νμ΄μ€λ₯Ό μ μν λ, λ¬Έλ² μ€λ₯κ° λ°μνλ λΆλΆμ λͺ¨λ κ³ λ₯΄μμ€.
interface InterfaceA {
int val1 = 0; // 1
private int val2 = 0; // 2
public void up(); // 3
public void down(); // 4
private void left(); // 5
public void right(){}; // 6
1 : λ³μ μ μΈ κ°λ₯
2 : private keyword μλ¨
3 : λ©μλ μν κ°λ₯
4 : λ©μλ μν κ°λ₯
5 : private keyword μλ¨
6 : μ€κ΄νΈ μ°λ©΄ μλ¨. - ꡬνλ κ±Έλ‘ λ³Έλ€
08. λ€μ μλ° μ½λλ μ»΄νμΌ μ€λ₯κ° λ°μνλ€. μμΈμ λν΄ μ½μ νμμ€
interface InterfaceA {
public void up();
public void down();
public void left();
}
class AB implements InterfaceA {
int value = 0;
public void up() {
value++;
}
public void down() {
value--;
}
public static void main(String[] args) {
AB ab = new AB();
ab.up();
ab.down();
}
}
μ λ΅ : AB ν΄λμ€μμ left λ©μλλ₯Ό ꡬννμ§ μμκΈ° λλ¬Έ
μΈν°νμ΄μ€λ₯Ό μμλ°μΌλ©΄ λͺ¨λ λ©μλλ₯Ό ꡬνν΄μΌ νλ€