목록이것이 자바다/07 상속 (15)
충분히 쌓여가는
메소드가 클래스 타입의 매개변수를 가지고 있을 경우, 호출할 때 동일한 타입의 객체를 제공하는 것이 정석이지만 자식 객체를 제공할 수도 있다 Drive 클래스가 있고, Vehicle 매개변수를 갖는 drive() 메소드가 정의되어 있다 drive() 메소드는 매개값으로 전달받은 vehicle의 run() 메소드를 호출한다 pulbic class Driver { public void dirve(Vehicle vehicle) { vehicle.run(); } } dirve() 메소드를 호출한다면 밑의 코드와 같이 Vehicle 객체를 제공한다 Driver driver = new Driver(); Vehicle vehicle = new Vehicle(); driver.drive(vehicle); 그러나 매개값..
다형성 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말한다 프로그램을 구성하는 개체를 바꾸면 프로그램의 실행 성능이 다르게 나올 수 있다 다형성을 구현하기 위해 자동 타입 변환과 메소드 재정의가 필요하다 자동 타입 변환 + 메소드 재정의 = 다형성 예제 package ch07.sec08.exam01; public class Tire { public void roll() { System.out.println("회전"); } } package ch07.sec08.exam01; public class HankookTire extends Tire { @Override public void roll() { System.out.println("한국 타이어 회전"); } } package ch07.se..
자식 타입은 부모 타입으로 자동 변환되지만, 부모 타입은 자식 타입으로 자동 변환되지 않는다. 대신 캐스팅 연산자로 강제 타입 변환을 할 수 있다 자식타입 변수 = (자식타입) 부모타입객체; 그렇다고 해서 부모 타입 객체를 자식 타입으로 무조건 강제 변환할 수 있는 것은 아니다 자식 객체가 부모 타입으로 자동 변환된 후 다시 자식 타입으로 변환할 때 강제 타입 변환을 사용할 수 있다 parent parent = new Child(); //자동 타입 변환 Child child = (Child) parent; //강제 타입 변환 자식 객체가 부모 타입으로 자동 변환 부모 타입에 선언된 필드와 메소드만 사용 가능하다는 제약 사항이 있다 자식 타입에 선언된 필드와 메소드를 꼭 사용해야 한다면 강제 타입 변환을 ..
자동 타입 변환은 의미 그대로 자동적으로 타입 변환이 일어나는 것을 말한다 부모타입 변수 = 자식타입객체; 자식은 부모의 특징과 기능을 상속받았기 때문에 부모와 동일하게 취급될 수 있다 부모 타입으로 자동 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근 가능하다 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로 한정된다 그러나 자식 클래스에서 오버라이딩된 메소드가 있다면 부모 메소드 대신 오버라이딩된 메소드가 호출된다 예제 package ch07.sec07.exam02; public class Parent { public void method1() { System.out.println("Parent-method1"); } public void method2() { S..