//public class
public static void exe(Calculator cal){
//static으로 class method 생성해 각각의 instance가 method를 공유한다
//부모타입으로 매개변수를생성해 data를 가져온다
cal.setNum(100,200);
cal.calResult();
}
//main
public static void main(String[] args) {
Calculator c1 = new Sum(); //부모type의 자식 instance를 생성
Calculator c2 = new Subtractor();
exe(c1); //sum 의 값을 출력한다
exe(c2); //subtractor의 값을 출력한다
//부모타입으로 매개변수를 받기때문에 각각의 인스턴스는 인자값을 받아온다
//이처럼 calculator 하나의 type 으로 기능이 다른동작을수행하는걸 다형성이라고한다
Sum sum = new Sum();
sum.setNum(100,200);
sum.calResult();
Subtractor sub = new Subtractor();
sub.setNum(100,200);
sub.calResult();
//abstract class Calculator
//abstract는 미완성클래스로 상속을 강요하는 class이다
int n1, n2;
public void setNum(int n1, int n2) {
this.n1 = n1;
this.n2 = n2;
}
public abstract void calResult();
//추상method는 overriding을 해줘야한다
//class Sum extends Calculator
public calResult(){
System.out.println(this.n1+this.n2);
} //추상method를 overriding해준다
//class Subtractor extends Calculator
public void calResult() {
System.out.println(this.n1-this.n2;)
} //추상method를 overriding해준다
----------
Calculator c1 = new Sum();
Calculator c2 = new Subtractor();
Calculator ca[] = new Calculator[2];
ca[0] = new Sum();
ca[1] = new Subtractor();
//서로 다른 객체를 이용해서 method를 호출할수있지만
//부모가 같을경우 배열을 이용하여 두객체를 하나의 객체로 선언할수있다
-----------
static int i = 0; //carArray가 static이기때문에 변수도 static으로 바꿔준다
static Calculator calArray[] = new Calculator[3];
//static으로 배열을 생성했기때문에 객체를생성할필요가없다
//public class
public static void exe(Calculator cal){
//static으로 class method 생성해 각각의 instance가 method를 공유한다
//부모타입으로 매개변수를생성해 data를 가져온다
calArray[i++] = cal;
//carArray배열에 car객체를 입력한다
cal.setNum(100,200);
cal.calResult();
} //class method
//main
Sum sum = new Sum();
Subtractor sub = new Subtractor();
exe(sum);
exe(sub);
exe(sum);
exeSequence();
//같은 class이므로 바로불러올수있다
//exeSequence
public static void exeSequence() {
for(int i=0;i<calArray.length;i++) {
String str = calArray[i].operand();
//carArray[i]에 operand method를 호출
System.outprintln(str);
} //연산의 순서를 나타내기위한 class method
//abstract class Calculator
//abstract는 미완성클래스로 상속을 강요하는 class이다
int n1, n2;
public void setNum(int n1, int n2) {
this.n1 = n1;
this.n2 = n2;
}
public abstract void calResult();
//추상method는 overriding을 해줘야한다
public abstract String operand();
//연산의 순서를 나타내기위해 추상method를 만든다
//class Sum extends Calculator
public calResult(){
System.out.println(this.n1+this.n2);
} //추상method를 overriding해준다
public String operand(){
return "plust";
} //추상method를 overriding해준다
//class Subtractor extends Calculator
public void calResult() {
System.out.println(this.n1-this.n2;)
} //추상method를 overriding해준다
public String operand(){
return "minus";
} //추상method를 overriding해준다
'java' 카테고리의 다른 글
Object class(toString(), Equals(), hashCode()) (0) | 2019.08.03 |
---|---|
예외처리(Exception) (0) | 2019.08.03 |
다형성(Polymorphism) -first (0) | 2019.08.03 |
인터페이스(interface) (0) | 2019.08.03 |
final class, final method (0) | 2019.08.02 |