처음에
Shape shape = new Circle() 로
부모에 Circle을 넣어줬었기 떄문에
다시
Circle circle = (Circle) shape; 가 가능하다.
미리 자식으로 메모리에 올라가 있기 때문에
package java_0926;
interface Printable{
public void print(String doc);
}
class Printer implements Printable {
public void print(String doc) {
System.out.println(doc);
}
}
public class EmployeeTest {
public static void main(String[] args) {
Printable prn = new Printer();
prn.print("Hello");
}
}
package java_0926;
import java.util.Scanner;
abstract class Calc {
protected int a, b;
void setValue(int a, int b) {
this.a = a;
this.b = b;
};
abstract int calculate();
}
class Add extends Calc {
@Override
int calculate() {
return super.a + super.b;
}
}
class Sub extends Calc {
@Override
int calculate() {
return super.a - super.b;
}
}
class Div extends Calc {
@Override
int calculate() {
return super.a / super.b;
}
double calculate2() {
return super.a / (double) super.b;
}
}
class Mul extends Calc {
@Override
int calculate() {
return super.a * super.b;
}
}
public class EmployeeTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("두 정수와 연산자를 입력하시오>>");
int a = sc.nextInt();
int b = sc.nextInt();
char c = sc.next().charAt(0);
Calc cal;
if (c == '+')
cal = new Add();
else if (c == '-')
cal = new Sub();
else if (c == '/')
cal = new Div();
else
cal = new Mul();
cal.setValue(a, b);
System.out.println(cal.calculate());
}
}
package java_0926;
import java.util.Scanner;
interface Shape {
final double PI = 3.14; // 상수
void draw(); // 도형을 그리는 추상 메소드
double getArea(); // 도형의 면적을 리턴하는 추상 메소드
default public void redraw() { // 디폴트 메소드
System.out.print("--- 다시 그립니다.");
draw();
}
}
class Circle implements Shape {
int radius;
public Circle(int radius) {
this.radius = radius;
}
@Override
public void draw() {
System.out.println("원을 그립니다.");
}
@Override
public double getArea() {
return radius * radius * PI;
}
}
public class EmployeeTest {
public static void main(String[] args) {
Shape donut = new Circle(10); // 반지름이 10인 원 객체
donut.redraw();
System.out.println("면적은 " + donut.getArea());
}
}
public static int[] selectionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int tmp = arr[i], j;
for (j = i - 1; j >= 0; j--) {
if (tmp < arr[j]) {
arr[j + 1] = arr[j];
} else {
break;
}
}
arr[j + 1] = tmp;
}
return arr;
}
package java_0926;
import java.util.Scanner;
interface Stack{
public boolean isEmpty();
public boolean isFull();
public void push(char item);
public char pop();
public char peek();
public void clear();
public void printStack();
}
class StackFunc implements Stack {
int top;
char[] stack;
public StackFunc(int stackSize) {
stack = new char[stackSize];
top = -1;
}
@Override
public boolean isEmpty() {
if(top == -1)
return true;
else
return false;
}
@Override
public boolean isFull() {
if(top == stack.length)
return true;
else
return false;
}
@Override
public void push(char item) {
if(isFull())
System.out.println("Stack is Full");
else {
stack[++top] = item;
System.out.println("입력된 문자 : " + item);
}
}
@Override
public char pop() {
if(isEmpty()) {
System.out.println("Stack is Empty");
return 0;
}
else {
System.out.println("삭제된 문자 : " + stack[top]);
return stack[top--];
}
}
@Override
public char peek() {
if(isEmpty()) {
System.out.println("Stack is Empty");
return 0;
}
else {
System.out.println("엿볼려는 문자 : " + stack[top]);
return stack[top];
}
}
@Override
public void clear() {
if(isEmpty()) {
System.out.println("Stack is Empty");
}else {
top=-1;
System.out.println("스택이 초기화 되었습니다.");
}
}
public void printStack() {
System.out.print("Stack elements : ");
for (int i=0; i<=top; i++) {
System.out.print(stack[i]+" ");
}
System.out.println();
}
}
public class EmployeeTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("스택 사이즈를 입력하시오.");
int stackSize = sc.nextInt() ;
Stack stack = new StackFunc(stackSize);
stack.push('A');
stack.printStack();
stack.push('B');
stack.printStack();
stack.push('C');
stack.printStack();
stack.pop();
stack.printStack();
stack.pop();
stack.printStack();
stack.peek();
stack.printStack();
stack.clear();
stack.printStack();
}
}