μΆμν΄λμ€?
μ€μ²΄κ° μλ λΆλͺ¨κ° μμμ μ£Όλ κ²
β μΆμν΄λμ€μλ λ°λμ μΆμ λ©μλκ° ν¬ν¨λμ΄μΌ νλ€.
β ν΄λΉ λ©μλλ μμ λ°μ μμ ν΄λμ€μμ λ°λμ ꡬνν΄μ€μΌ νλ€.(μ€λ²λΌμ΄λ©)
β μΆμν΄λμ€μ ν€μλλ abstract
β μΆμν΄λμ€λ μΌλ° λ©μλ, μΆμ λ©μλ, μΌλ° μΈμ€ν΄μ€ νλ λ± λͺ¨λ ν¬ν¨ κ°λ₯νλ€.
=> (μΈν°νμ΄μ€μ λ€λ₯Έ μ )
μΆμ λ©μλ μ¬μ© λͺ©μ
μΆμ λ©μλκ° ν¬ν¨λ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€κ° λ°λμ μΆμ λ©μλλ₯Ό ꡬννλλ‘ νκΈ° μν¨.
μΆμ λ©μλ μ μΈ
abstract λ°ννμ
λ©μλμ΄λ¦();
μ μΈλΆλ§ μ‘΄μ¬νλ©°, ꡬνλΆλ μμ±μ ν¨.
μμ±λμ§ μμ ꡬνλΆλ μμ ν΄λμ€μμ μ€λ²λΌμ΄λ©νμ¬ μ¬μ©..!!!!
μΆμ ν΄λμ€
νλ μ΄μμ μΆμ λ©μλλ₯Ό ν¬ν¨νλ ν΄λμ€
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ€μν νΉμ§μΈ λ€νμ±μ κ°μ§λ λ©μλμ μ§ν©μ μ μν μ μλλ‘ ν΄μ€.
μ¦, λ°λμ μ¬μ©λμ΄μΌ νλ λ©μλλ₯Ό μΆμ ν΄λμ€μ μΆμ λ©μλλ‘ μ μΈν΄ λμΌλ©΄..
μ΄ ν΄λμ€λ₯Ό μμλ°λ λͺ¨λ ν΄λμ€μμλ μ΄ μΆμ λ©μλλ₯Ό λ°.λ.μ. μ¬μ μ ν΄μΌνλ€.
abstract class ν΄λμ€μ΄λ¦ {
...
abstract λ°ννμ
λ©μλμ΄λ¦();
...
}
μ΄λ¬ν μΆμ ν΄λμ€λ ꡬνλΆκ° μκΈ° λλ¬Έμ μΈμ€ν΄μ€ μ¦ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
λ°λΌμ μΆμ ν΄λμ€λ λ¨Όμ μμμ ν΅ν΄ μμ ν΄λμ€λ₯Ό λ§λ€κ³ !
λ§λ μμ ν΄λμ€μμ μΆμ ν΄λμ€μ λͺ¨λ μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©κΉμ§ ν΄μΌ
μμ ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
μΆμν΄λμ€ κΈ°λ³Έ μμ )
abstract class Animal {
abstract void cry();
}
class Cat extends Animal {
@Override
void cry() {
System.out.println("λ~μΉ λ~μΉ");
}
}
class Dog extends Animal {
@Override
void cry() {
System.out.println("λ©! λ©!");
}
}
class Duck extends Animal {
@Override
void cry() {
System.out.println("κ½₯!κ½₯!");
}
}
import java.util.Scanner;
public class AbstractMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Animal animal = null;
System.out.print("λλ¬Όμ μ ννμΈμ.[1]κ³ μμ΄ [2]κ°μμ§ [3]μ€λ¦¬ : ");
int ani = sc.nextInt();
switch(ani) {
case 1 : animal = new Cat(); break;
case 2 : animal = new Dog(); break;
case 3 : animal = new Duck(); break;
default :
}
animal.cry();
}
}
β μΆμ λ©μλλ abstract ν€μλλ₯Ό μ¬μ©νκ³ , λ°λμ μΈλ―Έμ½λ‘ (;)μΌλ‘ λλμΌ νλ€.
β μΆμ λ©μλλ ꡬνλΆκ° μλ€. μ¦, {} μ€κ΄νΈκ° μ.λ€. μ΄κ²μ΄ μΆμν
=> μΆμνλ λ¬΄μΌ ν μ§λ§ μ ν΄λκ³ , ꡬ체μ μΈ νλμ μ μνμ§ μλλ€.
νλμ μμλ°λ μμ ν΄λμ€λ€μ΄ ꡬννλ€.
μΆμν΄λμ€ μμ© μμ )
μΈμ€ν΄μ€ νλ, μμ±μ, μΈμ€ν΄μ€ λ©μλκ° ν¬ν¨λ μΆμ ν΄λμ€ μμ±!
Phone(λΆλͺ¨ ν΄λμ€)
public abstract class Phone {
String name;
boolean isPower;
Phone(String name) {
this.name = name;
}
void setPower(boolean isPower) {
this.isPower = isPower;
if(isPower) {
System.out.println("Phone Power ON");
} else {
System.out.println("Phone Power OFF");
}
}
abstract void call();
}
abstract void call();
μμλ°λ μμ ν΄λμ€λ λͺ¨λ call() μ μ€λ²λΌμ΄λ© νμ¬ μ¬μ©ν΄μΌ ν¨!
SmartPhone(μμν΄λμ€)
public class SmartPhone extends Phone {
SmartPhone(String name) {
super(name);
}
@Override
void call() {
System.out.println("λΆλͺ¨μ μμ²μΌλ‘ ν΅ν κΈ°λ₯ ꡬν");
}
public void internet() {
System.out.println("μΈν°λ·μ μ°κ²°ν©λλ€.");
}
}
λΆλͺ¨ ν΄λμ€μ λ§€κ°λ³μκ° μλ μμ±μλ₯Ό μμ±νκΈ° λλ¬Έμ
μμν΄λμ€μμ super() μ¬μ©νμ¬ λΆλͺ¨ μμ±μ λ¨Όμ νΈμΆν΄μ€λ€.
λ¬Όλ‘ λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ©΄ μλ νΈμΆλλλ° λ§€κ°λ³μκ° μλ μμ±μκ° μμΌλ©΄ μ§μ νΈμΆν΄μ€μΌ νλ€.
μ κΈ°μ΅μ΄ μλλ©΄ super,super() ν¬μ€ν μ μ°Έμ‘°νμ.
https://developyanggaeng.tistory.com/109
μλ°(Java) - κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (8) super, super()
super μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€λ‘ λΆν° μμ λ°μ νλ(λ©€λ²)λ₯Ό μ°Έμ‘°νλ λ³μ ν΄λμ€ λ΄μ λ©€λ²λ³μμ μ§μλ³μμ μ΄λ¦μ΄ κ°μ κ²½μ° κ΅¬λΆμ μν΄ this. λ₯Ό μ¬μ©νλ―μ΄ λΆλͺ¨ ν΄λμ€μ μμ ν΄λ
developyanggaeng.tistory.com
call() μ€λ²λΌμ΄λ© νμ¬ κΈ°λ₯ ꡬν
@Override
void call() {
System.out.println("λΈλΌλΈλΌ");
}
internet()μ SmartPhone(μμ ν΄λμ€)μμ λ§λ λ³λμ λ©μλ
=> λΆλͺ¨ ν΄λμ€λ λͺ¨λ¦.
=> κ·Έλμ Mainμμ λΆλͺ¨ ν΄λμ€λ‘ μμ ν΄λμ€ κ°μ²΄ μμ±νλ©΄ internet() νΈμΆ μ λ¨~!
μ? μμμλ λ§νμ§λ§ λΆλͺ¨κ° λͺ¨λ₯΄λ λ©μλμ΄κΈ° λλ¬Έμ.
Main
public class AbstractMain2 {
public static void main(String[] args) {
SmartPhone smartphone = new SmartPhone("μμ΄ν°12pro");
smartphone.setPower(true);
smartPhone.call();
smartPhone.internet();
Phone phone = new SmartPhone("κ°€λμs20");
phone.setPower(true);
phone.call();