일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- AI/ML
- 개발/컴퓨터네트워크
- 개발/네트워크
- 개발/보안
- 개발/Tools/프레임워크/Spring
- ⌨️Developer
- 개발/CS/알고리즘
- 개발/Electron
- 개발/프레임워크&라이브러리
- AI/GPT
- 개발/Java/Spring
- 개발/Java
- 개발/OOP
- electron
- 개발/언어/Java
- 개발/언어론
- 카테캠
- ⌨️Developer/보안
- 개발/MySQL
- 개발
- 개발/CS/OS
- 개발/webrtc
- 개발/환경
- 대외활동/카카오테크캠퍼스
- 카카오 테크 캠퍼스
- 개발/에러
- 알고리즘
- 카카오테크캠퍼스
- ai
- 취업
- Today
- Total
봄수의 연구실
형변환(업캐스팅) 본문
형변환(업캐스팅)
형변환 (업캐스팅) 은 자바에서 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 과정입니다.
업캐스팅을 사용하면 상위 클래스 타입의 참조 변수를 통해 하위 클래스 객체에 접근할 수 있으며, 이를 통해 다형성을 구현할 수 있습니다.
Example. 명시적 형변환
class Animal {
void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("The dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("The cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal[] animals = new Animal[3];
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Animal();
for (Animal animal : animals) {
animal.makeSound();
}
}
}
위 예제에서 Dog
클래스는 Animal
클래스를 상속받습니다.
Animal
타입의 참조 변수 myAnimal
에 Dog
객체를 할당하면서 업캐스팅이 발생합니다.
이렇게 업캐스팅된 myAnimal
을 통해 makeSound()
메서드를 호출하면, 오버라이딩된 Dog
클래스의 makeSound()
메서드가 실행됩니다.
위 예제에서 Animal
타입의 배열에 Dog
, Cat
, 그리고 Animal
인스턴스를 저장합니다.
이를 통해 for
루프에서 각 인스턴스의 makeSound()
메서드를 호출할 때, 동적으로 적절한 메서드가 실행됩니다.
이렇게 업캐스팅과 다형성을 활용하면 코드를 더 유연하게 작성할 수 있습니다.
또한 새로운 동물 클래스가 추가되더라도 기존 코드를 변경하지 않고 쉽게 확장할 수 있습니다.
묵시적 형변환 (Implicit Type Casting)
묵시적 형변환은 컴파일러가 자동으로 수행하는 형변환으로, 작은 타입에서 큰 타입으로 변환할 때 발생합니다.
묵시적 형변환은 데이터 손실의 위험이 없기 때문에 자동으로 처리됩니다.
public class Main {
public static void main(String[] args) {
// 묵시적 형변환: 작은 타입에서 큰 타입으로 변환
int myInt = 10;
double myDouble = myInt;
System.out.println("myInt value: " + myInt); // 출력: myInt value: 10
System.out.println("myDouble value: " + myDouble); // 출력: myDouble value: 10.0
}
}
위 예제에서 int
타입의 변수 myInt
를 double
타입의 변수 myDouble
에 할당하면서 묵시적 형변환이 발생합니다.
이 경우, 컴파일러는 자동으로 int
타입을 double
타입으로 변환해줍니다.
이렇게 묵시적 형변환을 사용하면 데이터 손실 없이 타입 간 변환을 수행할 수 있습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
Is-A와 HAS-A 또는 Inheritance와 Composition - 🐥 카카오 테크 캠퍼스 (0) | 2023.04.27 |
---|---|
다형성(Polymorphism) (0) | 2023.04.27 |
Overriding(재정의) (0) | 2023.04.27 |
상속(Inheritance) (0) | 2023.04.27 |
Super 키워드 (0) | 2023.04.26 |