extends라는 예약어로 부모의 클래스를 상속받는다.
super()를 사용하여 부모 클래스의 생성자를 호출한다.
자바는 매개변수가 없는 기본생성자를 찾는것이 기본이고, 클래스의 생성자 중 변수가 있는 생성자가 있을 경우 super()를 사용하게 된다.
super()메소드를 명시하지 않으면 컴파일 시 자동으로 생성된다.
public class Parent {
public Parent(String name) {
System.out.println("parent constructor" + name);
}
public void printName() {
System.out.println("parent printName()");
}
}
public class Child extends Parent {
public Child() {
super("test");
System.out.println("child constructor");
}
}
public class Parent {
public Parent() {
System.out.println("parent constructor");
}
public void printName() {
System.out.println("parent printName()");
}
}
public class Child extends Parent {
public Child() {
System.out.println("child constructor");
}
public void printName() {
System.out.println("child printName");
}
}
public class MainTest {
public static void main(String[] args) {
Child child = new Child();
child.printName();
}
}
parent constructor
child constructor
child printName
생성자의 경우 자동으로 부모 클래스에 있는 생ㅅ어자를 호출하는 super()가 호출되지만, 메소드는 그렇지 않다.
부모 클래스의 메소드를 오버라이딩 할때 자식 메소드가 부모 클래스 메소드의 접근 제어자보다 범위가 축소 될 수 없다.
- @Override 어노테이션을 통해 검사할 수 있는데 접근 범위가 좁아졌기때문에 컴파일 오류가 난다.
public class Parent {
public Parent() {
System.out.println("parent constructor");
}
**private** void printName() {
System.out.println("parent printName()");
}
}
public class Child extends Parent {
public Child() {
System.out.println("child constructor");
}
@Override
**public** void printName() {
System.out.println("child printName");
}
}
public class MainTest {
public static void main(String[] args) {
Parent child = new Child();
Child parent = (Child) new Parent();
child.printName();
}
}
instanceof() 메서드를 통해타입 검사 시 작은 타입의 타입부터 검사 해야한다.자동타입변환 + 메소드 오버라이딩이 구현되어야한다.Parent child = new Child();상속을 받는 클래스의 선언문에 사용하는 예약어는 무엇인가요?
상속을 받은 클래스의 생성자를 수행하면 부모의 생성자도 자동으로 수행된다.
부모 클래스의 생성자를 자식 클래스에서 직접 선택하려고 할 때 사용하는 예약어는 무엇인가요?
메소드 Overriding과 Overloading을 정확하게 설명해 보세요.*
A가 부모, B가 자식 클래스라면 A a=new B(); 의 형태로 객체 생성이 가능한가요?*
명시적으로 형변환을 하기 전에 타입을 확인하려면 어떤 예약어를 사용해야 하나요?*
위의 문제에서 사용한 예약어의 좌측에는 어떤 값이, 우측에는 어떤 값이 들어가나요?*
instanceof 예약어의 수행 결과는 어떤 타입으로 제공되나요?*
Polymorphism이라는 것은 뭔가요?*