목록분류 전체보기 (639)
충분히 쌓여가는
변수가 참조하는 객체의 타입을 확인하고자 할 때 instanceof 연산자를 사용할 수 있다 instanceof 연산자의 좌항에는 객체, 우항에는 타입이 오는데 좌항의 객체가 우항이 타입이면 true, 아니면 false를 산출한다 boolean result = 객체 insatanceof 타입; 예를 들어 Child 타입으로 강제 타입 변환하기 전에 매개값이 Child 타입인지 여부를 instanceof 연산자로 확인한다 public void method(Parent parent) { if(parent instanceof Child) { // parent 매개변수가 참조하는 객체가 Child인지 조사 Child child = (Child) parent; //child 변수 사용 } } Java 12부터는 ..
메소드가 클래스 타입의 매개변수를 가지고 있을 경우, 호출할 때 동일한 타입의 객체를 제공하는 것이 정석이지만 자식 객체를 제공할 수도 있다 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; //강제 타입 변환 자식 객체가 부모 타입으로 자동 변환 부모 타입에 선언된 필드와 메소드만 사용 가능하다는 제약 사항이 있다 자식 타입에 선언된 필드와 메소드를 꼭 사용해야 한다면 강제 타입 변환을 ..