오버라이딩 (Overriding) Overloading 과는 다른 개념으로, 오버라이딩은 상속 관계에서 부모 클래스에 있는 메서드를 재정의하는 것이다. 부모 클래스에 있는 메서드와 매개변수 리스트가 동일해야 한다. 또한 부모 클래스에 있는 메서드와 접근 권한 수식어가 동일할 필요는 없지만 기존 부모 클래스의 메서드 접근 권한의 범위보다 작게 설정할 수는 없다. 즉, 접근 권한은 같거나 더 넓은 수식어를 사용해야 한다. 메서드 앞에 final 키워드가 붙으면 해당 메서드는 더 이상 오버라이딩이 불가능하다. 클래스 앞에 final 키워드가 붙으면 해당 클래스를 상속할 수 없다. 예제 Main.java public class Main { public static void main(String[] args) {..
상속에서의 생성자 호출 순서 자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자가 호출되지 않으면 자동으로 부모 클래스의 default 생성자가 호출된다. 부모 클래스에 디폴트 생성자가 없는 경우도 있는데 그럴 때는 부모 클래스의 다른 생성자를 반드시 호출해야 한다. 자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자를 호출할 수도 있다. super 키워드를 사용하여 부모 클래스의 생성자를 호출할 수 있는데, 이때 super 키워드는 자식 생성자의 첫째 줄에 호출되어야 한다. 그러지 않으면 'Constructor call must be the first statement in a constructor'라는 오류 문구가 뜬다. 예제 현재 코드에서 상속은 (부모) Vehicle - Car - Hy..
상속 (Inheritance) 상위 클래스를 상속받아서 하위 클래스를 정의하는 방법이다. 자바에서는 오로지 하나의 부모로부터만 상속받을 수 있다. 다중 상속은 허용되지 않는다. 상속을 사용하면 기존에 있는 객체를 그대로 활용하면서 새로운 객체에서 추가되거나 변경되는 부분만 작성하면 되므로 소프트웨어 개발 효율을 높일 수 있다. Sub Class(하위 클래스)에서는 Super Class(상위 클래스)가 가지고 있는 멤버 변수들을 선언하지 않아도 사용할 수 있다. 따라서 상위 클래스에 없는 멤버 변수만 선언하면 된다. 예제 1 - 상속 사용 안 함 BasicTV.java public class BasicTV { boolean isPowerOn; int channel; int volume; public voi..