- 상속을 받는 클래스의 선언문에 사용하는 예약어는 무엇인가요?
extends
- 상속을 받은 클래스의 생성자를 수행하면 부모의 생성자도 자동으로 수행된다.
확장을 한 클래스가 생성자를 호출하면, 자동으로 부모 클래스의 "기본 생성자"가 호출된다.
- 부모 클래스의 생성자를 자식 클래스에서 직접 선택하려고 할 때 사용하는 예약어는 무엇인가요?
super라는 예약어를 사용하면 부모 클래스를 의미한다. 이 super를 메소드처럼 super()로 사용하면 부모 클래스의 생성자를 호출한다.
- 메소드 Overriding과 Overloading을 정확하게 설명해 보세요.
Overriding은 부모 클래스에서 정의한 메소드를 자식 클래스가 메소드의 선언 구문을 동일하게 선언해 사용하는 것이다.
overloading은 메소드를 확장하는 것이다. 메소드 이름은 동일하게 하고 매개변수 타입과 개수를 다르게 한다.
- A가 부모, B가 자식 클래스라면 A a=new B(); 의 형태로 객체 생성이 가능한가요?
"부모 변수명= new 자식();" 선언은 가능하다. 하지만 "자식 변수명=new 부모();" 선언은 불가능하다. 전자의 경우는 자식 클래스가 부모 클래스의 모든 내용을 상속 받아 부모 클래스의 메소드와 변수를 사용할 수 있으나 후자의 경우, 부모 클래스가 자식 클래스의 변수와 메소드를 갖지 못했기 때문에 선언이 불가능하다.
- 명시적으로 형변환을 하기 전에 타입을 확인하려면 어떤 예약어를 사용해야 하나요?
instanceof
- 위의 문제에서 사용한 예약어의 좌측에는 어떤 값이, 우측에는 어떤 값이 들어가나요?
객체, 타입
- instanceof 예약어의 수행 결과는 어떤 타입으로 제공되나요?
boolean
- Polymorphism이라는 것은 뭔가요?
Polymorphism은 다형성을 의미한다. 다형성이란 부모 타입 참조변수로 자식 타입 객체를 다루는 것이다. 상속관계에 있는 클래스 간에 사용한다. 부모 타입으로 선언했지만 실제 호출된 메소드는 생성자를 사용한 클래스의 메서드이다. 즉 부모 클래스의 객체를 사용했지만 메모리에는 자식 클래스의 내용이 담긴다.