자바에서 캐스팅은 타입을 변환하는 것이라고 한다. 이때 캐스팅은 상속관계에 있는 부모-자식 클래스 간에 서로 형변환이 가능하다.
캐스팅이 필요한 이유는 , 다형성과 상속 때문이다.
다형성은 형변환으로 오버라이딩된 함수를 분리해서 사용할 수 있고, 상속은 범용적인 프로그래밍이 가능하기 때문이다.
묵시적 형변환 : 형변환이 자동으로 발생한다.(업캐스팅)
자식클래스가 부모클래스 타입으로 캐스팅되는 것을 말한다.
명시적 형변환 : 형변환할 내용을 적어줘야하는 경우로 다운캐스팅이라고 한다.
명시적 형변환은 업캐스팅이 발생한 이후에 작용한다.
부모클래스가 자식 클래스 타입으로 캐스팅되는 것을 말한다.
부모클래스인 상위클래스를 수퍼 클래스, 자식클래스인 하위클래스를 서브클래스라고 한다.
업캐스팅을 하게 되면 수퍼클래스의 참조변수가 서브클래스로 객체화된 인스턴스를 가리킬 수 있게 되며, 서브클래스의 모든 멤버필드와 메서드에 접근할 수 없다. 또한 명시적 타입캐스팅 선언을 할 필요가 없다.
자식 클래스가 부모클래스로부터 상속받은 멤버를 참조할때 사용하는 참조변수를 말한다. 부모클래스와 자식클래스의 멤버이름이 같은 경우, 부모클래스의 멤버를 가리킨다고 구분하기 위해 super를 사용한다.
부모클래스의 생성자를 호출하는 메서드다. 부모 클래스의 멤버 중 private으로 설정된 멤버까지 모두 접근하기 위해 부모 클래스의 생성자를 호출해, 부모클래스의 멤버를 초기화하도록 해주는 역할을 한다.
생성자가 하나도 정의되어 있지 않다면 자바 컴파일러가 자동으로 기본 생성자를 생성해준다. 하지만 매개변수를 가지는 생성자를 하나라도 가진다면, 부모클래스에 기본 생성자가 추가되지 않게 되고, 자식클래스에서 super()를 호출한다면, 오류가 발생한다. 따라서 이 경우 부모클래스에 기본생성자를 추가해서 사용해야 한다.