스터디 실습 문제 2
1.
class BindingTest{
public static void main(String[] args) {
Parent p = new Child(); //참조변수의 타입 Child.
Child c = new Child();
//중복된경우 참조변수의 타입에 따라 달라짐.
System.out.println("p.x = " + p.x);
p.method();
System.out.println("c.x = " + c.x);
c.method();
}
}
class Parent {
int x = 100; //조상클래스의 멤버변수
void method() {
System.out.println("Parent Method");
}
class Child extends Parent
int x = 200;
void method() {
System.out.println("Child Method");
}
}
[실행결과]
p.x = 100
Child Method
c.x = 200
Child Method
2.
조상타입의 참조변수로 자손타입의 객체 참조
Product p1 = new TV();
Product p2 = new TV();
Product p3 = new TV();
공통의 조상을 가진 서로 다른 종류의 객체를 배열로 묶어서 다룰 수 있음.
Product p[] = new Product[3];
p[0] = new TV();
p[1] = new Computer();
p[2] = new Audio();
배열의 크기를 알아서 관리
Vector item = new Vector();
(item.add(p);)
3-1.
피보나치 수열을 재귀함수로 구현한다.
피보나치수열은 fib(0)=0, fib(1)=1 ... fib(n)=fib(n-1)+fib(n-2)
3-2.
재귀함수로 구현하면 시간복잡도가 지수가 된다.
왜냐하면 fib(5)를 구한다고 했을 때 아래와 같이 된다.
fib(5)
fib(4)+fib(3)
fib(3)+fib(2)+fib(2)+fib(1)
...
여기서 fib(2)와 같이 동일한 계산이 반복되기 때문이다.
한번 구한 값을 저장해서 여러번 중복 계산하지 않는 메모이제이션에 대해 알아보고 배열을 사용하여 동적 계획을 이용해서 구현한다.
https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EA%B3%84%ED%9A%8D%EB%B2%95