ποΈ Backend/Java
μλ°(Java) - κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (7) λ€νμ±
kongmi
2023. 1. 16. 19:12
λ€νμ±
μ¬λ¬κ°μ§ νμ μ νκ°μ§ νμ μΌλ‘ μ²λ¦¬ ν μ μλ κΈ°μ (μμ κ΄κ³μ μ΄μ©)
λΆλͺ¨ ν΄λμ€μ μ°Έμ‘° λ³μλ‘ μμ ν΄λμ€μ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό μ°Έμ‘°νλ λ°©λ²
λ¨, λΆλͺ¨ ν΄λμ€κ° μκ³ μλ λ©μλκ° μ€λ²λΌμ΄λ© λμ΄ μλ κ²½μ°μ ν΄λΉ!!!
Parent
public class Parent {
protected int num;
public void display() {
System.out.println("λΆλͺ¨ ν΄λμ€ λ©μλ");
}
}
Child
public class Child extends Parent {
private int x = 100;
public Child() {}
public void out() {
System.out.println("λΆλͺ¨μ protected num νλ : " + num);
System.out.println("μμ ν΄λμ€ λ©μλ");
}
@Override
public void display() {
System.out.println("μμ λ°μ μ¬μ μν λ©μλ");
}
}
Main
public class PolyEx1 {
public static void main(String[] args) {
Child child = new Child(); // Child ν΄λμ€μ μ°Έμ‘° λ³μ(child)λ‘ Child κ°μ²΄λ₯Ό μ°Έμ‘°
child.display();
child.out();
Parent parent = new Child(); // λΆλͺ¨ ν΄λμ€μ μ μ‘°λ³μλ‘ μμ κ°μ²΄λ₯Ό μ°Έμ‘°
parent.display();
}
}

λ§€κ°λ³μμ λ€νμ±
λ©μλλ₯Ό νΈμΆν λμλ μΌλ°μ μΌλ‘ λ§€κ°λ³μμ νμ κ³Ό λμΌν λ§€κ°κ°μ μ§μ νμ§λ§,
μμκ΄κ³λ₯Ό μ΄μ©ν΄ λ§€κ°λ³μμ μμ νμ μ κ°μ²΄λ₯Ό μ¬μ©ν μ μμ.
λ§€κ°λ³μμ λ€νμ±μ μ΄μ©νλ©΄ νμν μμ μ νμν κ°μ²΄λ₯Ό λ©μλμ λ§€κ° λ³μλ‘ μ λ¬ ν μ μμ.
μμ 1
public class PolyBuyer {
public static void main(String[] args) {
Buyer buyer = new Buyer(); // ꡬ맀λ₯Ό νλ κ°μ²΄ μμ±
TV tv = new TV();
Audio audio = new Audio();
Computer computer = new Computer();
buyer.buy(tv);
buyer.buy(audio);
buyer.buy(computer);
buyer.viewInfo();
}
}
μ νλ€(tv,computer ...)μ Product ν΄λμ€μ μμ ν΄λμ€ μ΄κΈ° λλ¬Έμ buy λ©μλμ μ΄λ€ μ νμ΄ λ€μ΄μ€λ μκ΄ μμ.
λ€λ₯Έ μ νλ€μ΄ μΆκ°λλ€ νλ€ buy λ΄λΆ λ©μλλ 건λλ¦¬μ§ μμλ λ¨.
μ΄μ°¨νΌ λΆλͺ¨ ν΄λμ€(Product) μ°Έμ‘° λ³μλ₯Ό λ§€κ°λ³μλ‘ λ°κΈ° λλ¬Έ
μ΄λ κ°μ²΄κ° λμ¨ν κ΄κ³λ₯Ό λ§λλ ν΅μ¬μ΄ λ¨.
public class Product {
int price;
int bonusPoint;
}
class TV extends Product {
TV() {
this.price = 100; // μμλ°μ νλμ κ°μ μ΄κΈ°ν
this.bonusPoint = 10;
}
}
class Audio extends Product {
Audio() {
this.price = 120;
this.bonusPoint = 12;
}
}
class Computer extends Product {
Computer() {
this.price = 200;
this.bonusPoint = 20;
}
}
class Buyer {
int money = 1000;
int bonusPoint = 0;
void buy(Product p) { // β
β
κ° μ νμ λν λΆλͺ¨ ν΄λμ€ νμ
μ λ³μ
money -= p.price; // μ ν ꡬ맀μ μ ν κΈμ‘ λ§νΌμ λμ μ§λΆνλ μ½λ
bonusPoint += p.bonusPoint; // μ ν ꡬ맀μ ν΄λΉ ν¬μΈνΈλ₯Ό λμ νλ μ½λ
}
void viewInfo() {
System.out.println("μμ‘ : " + money);
System.out.println("ν¬μΈνΈ : " + bonusPoint);
}
}
<μΆλ ₯νλ©΄>
μμ‘ : 580
ν¬μΈνΈ : 42
μμ 2
Driver
public class Driver {
String name; // μ΄μ μ μ΄λ¦
public Driver(String name) {
this.name = name;
}
public void drive(Vehicle vehicle) {
System.out.print(name + "μ ");
vehicle.run();
}
}
Vehicle
public class Vehicle {
public void run() {
System.out.println("μλμ°¨κ° λ¬λ¦½λλ€.");
}
}
class SportsCar extends Vehicle {
@Override
public void run() {
System.out.println("μ€ν¬μΈ μΉ΄κ° λ¬λ¦½λλ€.");
}
}
class Bus extends Vehicle {
@Override
public void run() {
System.out.println("λ²μ€κ° λ¬λ¦½λλ€.");
}
}
class Taxi extends Vehicle {
@Override
public void run() {
System.out.println("νμκ° λ¬λ¦½λλ€.");
}
}
Main
import java.util.Scanner;
public class PolyCar {
public static void main(String[] args) {
Driver driver = new Driver("νκΈΈλ");
SportsCar sportsCar = new SportsCar();
Bus bus = new Bus();
Taxi taxi = new Taxi();
Scanner sc = new Scanner(System.in);
System.out.print("μ΄μ νκ³ μΆμ μ°¨λ₯Ό μ ν νμΈμ. [1]μ€ν¬μΈ μΉ΄ [2]λ²μ€ [3]νμ : ");
int selCar = sc.nextInt();
switch (selCar) {
case 1 : driver.drive(sportsCar); break;
case 2 : driver.drive(bus); break;
case 3 : driver.drive(taxi); break;
}
}
}