반응형
질문했던 내용
* 다형적 변수
A obj;
obj = new A(); True
A에는 A기능이 있다.
A obj;
obj = new B(); True
A에는 B기능이 있다.
A obj;
obj = new C(); True
A에는 C기능이 있다.
A obj;
obj = new D(); True
A에는 D기능이 있다.
D obj2;
obj = new A(); False
D에는 A기능이 없다.
D obj2;
obj = new B(); False
D에는 B기능이 없다.
D obj2;
obj = new C(); False
D에는 C기능이 없다.
D obj2;
obj = new D(); True
D에는 D기능이 있다.
부모는 자식의 클래스를 직접 사용할 수는 없다.
반면 자식은 부모의 클래스를 사용할 수 있다.
예를 들어서,
Calculator에 plus 라는 메소드가 있고
Calculator2에 minus 라는 메소드가 있다면
메인 클래스에서는 Calculator2 의 객체를 생성하고 메소드를 통해
인스턴스 변수에 접근할 수 있다.
하지만 extends를 통해서 Calculator 를 Calculator2의 부모 클래스로 만들면
자식 클래스인 Calculator가 plus라는 메소드를 사용할 수 있다.
예시) Calculator
package bitcamp.test;
public class Calculator {
public int plus(int a, int b) {
return a + b;
}
}
예시) Calculator2
package bitcamp.test;
public class Calculator2 extends Calculator {
public int minus(int a, int b) {
return a - b;
}
}
예시) test
package bitcamp.test;
public class Test {
public static void main(String[] args) {
Calculator2 c2 = new Calculator2();
System.out.println(c2.minus(100, 200));
System.out.println(c2.plus(100, 200));
}
}
반응형