2025-03-07
package ch12;
class Super {
int n1;
}
class Sub extends Super {
int n2;
}
public class C06Up {
public static void main(String[] args) {
Super ob1 = new Super();
ob1.n1 = 10;
Sub ob2 = new Sub();
ob2.n1 = 10;
ob2.n2 = 20;
// Upcasting (μλ νλ³ν)
Super ob3 = new Sub();
ob3.n1 = 100;
// Downcasting (κ°μ νλ³ν)
Sub ob6 = (Sub) ob3;
System.out.println(ob6);
}
}
A
ν΄λμ€ β B
, C
(νμ ν΄λμ€)B
β D
, E
C
β F
, G
package ch12;
class A { int a; public A(int a) { this.a = a; } }
class B extends A { int b; public B(int a, int b) { super(a); this.b = b; } }
class C extends A { int c; public C(int a, int c) { super(a); this.c = c; } }
class D extends B { int d; public D(int a, int b, int d) { super(a, b); this.d = d; } }
class E extends B { int e; public E(int a, int b, int e) { super(a, b); this.e = e; } }
class F extends C { int f; public F(int a, int c, int f) { super(a, c); this.f = f; } }
class G extends C { int g; public G(int a, int c, int g) { super(a, c); this.g = g; } }
public class C07UpDownCatingMain {
public static void UpDownCastTestFunc(A obj, int... arg) {
obj.a = arg[0];
if (obj instanceof B) ((B) obj).b = arg[1];
if (obj instanceof C) ((C) obj).c = arg[1];
if (obj instanceof D) ((D) obj).d = arg[2];
if (obj instanceof E) ((E) obj).e = arg[2];
if (obj instanceof F) ((F) obj).f = arg[2];
if (obj instanceof G) ((G) obj).g = arg[2];
System.out.println(obj);
}
public static void main(String[] args) {
UpDownCastTestFunc(new B(0, 0), 10, 20);
UpDownCastTestFunc(new D(0, 0, 0), 30, 40, 50);
}
}
abstract
ν€μλλ₯Ό μ¬μ©, κ°μ²΄ μμ± λΆκ°, νμ ν΄λμ€μμ μμ ν ꡬν νμ.{}
κ° μλ λ©μλ, λ°λμ νμ ν΄λμ€μμ @Override
λ‘ κ΅¬ν.abstract class Animal {
String name;
public Animal(String name) { this.name = name; }
abstract void makeSound();
void sleep() { System.out.println(name + " is sleeping."); }
}
class Dog extends Animal {
public Dog(String name) { super(name); }
@Override
void makeSound() { System.out.println(name + " says: Woof! Woof!"); }
}
public class AbstractTest {
public static void main(String[] args) {
Animal dog = new Dog("Buddy");
dog.makeSound();
dog.sleep();
}
}
interface
ν€μλλ₯Ό μ¬μ©νμ¬ μ μ.implements
μ¬μ©).interface Animal {
void makeSound();
}
class Dog implements Animal {
@Override
public void makeSound() { System.out.println("λ©λ©!"); }
}
public class InterfaceTest {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
}
}
import java.util.Scanner;
abstract class Converter {
abstract protected double convert(double src);
abstract protected String getSrcString();
abstract protected String getDestString();
protected double ratio;
public void run() {
Scanner scanner = new Scanner(System.in);
System.out.println(getSrcString()+"μ "+getDestString()+"λ‘ λ³νν©λλ€.");
System.out.print(getSrcString()+"μ μ
λ ₯νμΈμ>> ");
double val = scanner.nextDouble();
double res = convert(val);
System.out.println("λ³ν κ²°κ³Ό: "+res+getDestString()+"μ
λλ€");
scanner.close();
}
}
class Won2Dollar extends Converter {
public Won2Dollar(double ratio) { this.ratio = ratio; }
@Override
protected double convert(double src) { return Math.round(src / ratio); }
@Override
protected String getSrcString() { return "μν"; }
@Override
protected String getDestString() { return "λ¬λ¬"; }
}
public class C02Ex {
public static void main(String[] args) {
Won2Dollar toDollar = new Won2Dollar(1446);
toDollar.run();
}
}
β μ
μΊμ€ν
κ³Ό λ€μ΄μΊμ€ν
μΌλ‘ λ€νμ± νμ©
β μΆμ ν΄λμ€λ κ³΅ν΅ κΈ°λ₯ μ 곡 + νΉμ λ©μλ ꡬν κ°μ
β μΈν°νμ΄μ€λ λ€μ€ ꡬν κ°λ₯, κ·μΉ μ μ
β μΆμ ν΄λμ€λ₯Ό νμ©ν λ¨μ λ³ν νλ‘κ·Έλ¨ κ΅¬ν