// 삼성 프린트 드라이버 (삼성 개발자의 코드)
class SamsungPrint{
void samsungPrint(String str) {
System.out.println("삼성 프린터에 출력 : " + str);
}
}
//LG 프린트 드라이버 (LG 개발자의 코드)
class LGPrint{
void lgPrint(String str) {
System.out.println("LG 프린터에 출력 : " + str);
}
}
public class PrintProgram {
public static void main(String[] args) {
SamsungPrint sprint = new SamsungPrint();
sprint.samsungPrint("Hello World");
LGPrint lprint = new LGPrint();
lprint.lgPrint("Hello World");
}
}
[Console]
삼성 프린터에 출력 : Hello World
LG 프린터에 출력 : Hello World
interface Printable {
public void print(String doc);
}
class SamsungPrintDriver implements Printable {
@Override
public void print(String doc) {
System.out.println("From Samsung Printer");
System.out.println(doc);
}
}
class LGPrintDriver implements Printable {
@Override
public void print(String doc) {
System.out.println("From LG Printer");
System.out.println(doc);
}
}
public class PrintProgram {
public static void main(String[] args) {
String myDocument = "Hello World";
Printable prn = new SamsungPrintDriver();
prn.print(myDocument);
System.out.println();
prn = new LGPrintDriver();
prn.print(myDocument);
}
}
[Console]
From Samsung Printer
Hello World
From LG Printer
Hello World
interface Printable {
public static final int PAPER_WIDTH = 70;
public static final int PAPER_HEIGHT = 120;
public void print(String doc);
}
인터페이스도 extends를 이용하여 상속을 받을 수 있다.
instanceof 연산자도 사용 가능하다.
abstract class Calc {
private int a, b;
public int add() {
return a + b;
}
public abstract int sub();
}
abstract class Calc {
protected int a, b;
public int add() {
return a + b;
}
public abstract int sub();
}
class MyCalc extends Calc {
@Override
public int sub() {
return a - b;
}
}
class JavaTest {
public static void main(String[] args) {
Calc c = new MyCalc();
}
}
import java.util.Scanner;
abstract class Calc {
protected int a;
protected int b;
public void setValue(int a, int b) {
this.a = a;
this.b = b;
}
abstract int calculate();
}
class Add extends Calc {
@Override
int calculate() {
return a + b;
}
}
class Sub extends Calc {
@Override
int calculate() {
return a - b;
}
}
class Mul extends Calc {
@Override
int calculate() {
return a * b;
}
}
class Div extends Calc {
@Override
int calculate() {
return a / b;
}
}
class JavaTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int result = 0;
System.out.print("두 정수와 연산자를 입력하시오 >> ");
int a = sc.nextInt();
int b = sc.nextInt();
char c = sc.next().charAt(0);
Calc cal;
switch (c) {
case '+':
cal = new Add();
break;
case '-':
cal = new Sub();
break;
case '*':
cal = new Mul();
break;
case '/':
cal = new Div();
break;
default:
System.out.println("잘못된 연산자 입니다.");
sc.close();
return;
}
cal.setValue(a, b);
result = cal.calculate();
System.out.println(result);
sc.close();
}
}