-
[JAVA] 타입변환개발 강의 정리/JAVA 2021. 5. 6. 20:48
이전에 변수 타입을 배울때 잠깐 배우고 넘어간 타입 변환. 다형성 할 때 좀 더 심화된 내용으로 다시 나왔다. 오버라이딩과 함께 이해를 못해서 예제를 풀어도 제대로 이해하지 못했다. 책과 유투브에 있는 강의를 보면서 자바 수업이 끝나기 전에 꼭 익혀두어야 할 것 같다.
아래는 이것이 자바다 유투브 강의 정리한 내용!
1. 다형성
같은 타입이지만 실행결과가 다양한 객체를 대입(이용)할 수 있는 성질.
-부모타입에는 모든 자식 객체가 대입 될 수 있다.
-자식 타입은 부모 타입으로 자동 타입 변환 된다.
부모 클래스
Animal
자식클래스
Cat Dog
이러한 클래스가 있을 경우
Animal a = new Cat();
Animal a = new Dog();
로 만들 수 있다.
캣과 도그는 애니멀의 종류기 때문에 대입 될 수 있다는 것이다.
하나의 타입(Animal) 에 다양한 객체(Dog,Cat)을 만들 수 있는 성질 = 다형성.
1.1 자동 타입변환(묵시적 형변환)
-클래스 타입의 변환은 상속 관계에 있는 클래스 사이에서 발생.
-자식 타입은 부모타입으로 자동 타입변환(업캐스팅) 이 가능하다. (상속 했기 때문에 !)
-상속계층에서 상위 타입이라면 자동 타입 변환.
*중요*
부모 타입으로 자동 타입 변환된 이후에는 부모클래스에 선언된 필드와 메소드만 접근 가능
예외) 메소드가 자식 클래스에서 오버라이딩 되었다면 자식 클래스의 메소드가 대신 호출.
> 상속에서 상위 클래스와 하위 클래스에 같은 이름의 메서드가 존재할때,
호출되는 메서드는 "인스턴스"에 따라 결정되기 때문!
1.2 매개 변수의 다형성
메소드를 호출 할때, 매개변수를 객체타입으로 지정할 경우 보통 매개변수의 타입과 동일한 매개값을 지정하지만,
자식타입 객체를 지정 할 수도 있다.
Class Driver { //Vehicle 클래스를 이용하는 클래스
public void drive(Vehicle vehicle){ //매개변수를 Vehicle 타입으로 지정.
vehicle.run()
}
}
Class Vehicle{ //부모 클래스 Vehicle
public void run(){//run 메소드
System.out.println("차량이 달립니다.") }
}
Class Bus{ //자식 클래스 버스
public void run(){//run 메소드 오버라이딩
System.out.println("버스가 달립니다.") }
}
Class Example{
public static void main(String [] args){
Bus bud = new Bus();
Driver driver = new Driver();
driver.drive(bus)
// drive 메서드에는 Vehicle 객체 타입으로 받게 되어있는데,
Bus 형도 가능하다. Bus형이 Vehicle 의 자식 클래스이 때문이다.
>> 자식타입 객체를 지정 할 수도 있다. 의 의미가 바로 이것이다.
위의 코드를 풀어 쓰면 이렇게 된다. Vehicle bus = new Bus (); (혹은 Vehicle vehicle = bus;)
}
}'개발 강의 정리 > JAVA' 카테고리의 다른 글
[JAVA 백준 알고리즘] 4673번 셀프 넘버(Self Number) (0) 2021.05.27 [JAVA 백준 알고리즘] 백준 알고리즘 컴파일 에러 해결 방법 (0) 2021.05.16 [JAVA] 타입 변환, 객체 (0) 2021.05.10 [JAVA] 강제 타입 변환 (0) 2021.05.10 [JAVA] 오버로딩과 오버라이딩 (0) 2021.05.06