본문 바로가기

Back-end/Java

(89)
[Java - 기본] 다형성과 메서드 오버라이딩 ✅ 다형성과 메서드 오버라이딩 다형성을 이루는 또 하나의 중요한 핵심 이론은 바로 메서드 오버라이딩이다. 메서드 오버라이딩에서 꼭 기억해야 할 점은 오버라이딩 된 메서드가 항상 우선권을 가진다는 점이다. Parent, Child 모두 value라는 같은 멤버 변수를 가지고 있다. 멤버 변수는 오버라이딩 되지 않는다. Parent, Child 모두 method()라는 같은 메서드를 가지고 있다. Child에서 메서드를 오버라이딩 했다. 메서드는 오버라이딩 된다. ✏️ Parent package poly.overriding; public class Parent { public String value = "parent"; public void method() { System.out.println("Parent..
[Java - 기본] instanceof ✅ instanceof 다형성에서 참조형 변수는 이름 그대로 다양한 자식을 대상으로 참조할 수 있다. 그런데 참조하는 대상이 다양하기 때문에 어떤 인스턴스를 참조하고 있는지 확인하려면 어떻게 해야할까? Parent parent1 = new Parent(); Parent parent2 = new Child(); 여기서 Parent는 자신과 같은 Parent의 인스턴스도 참조할 수 있고, 자식 타입인 Child의 인스턴스도 참조할 수 있다. 이때 parent1, parent2 변수가 참조하는 인스턴스의 타입을 확인하고 싶다면 instanceof 키워드를 사용하면 된다. ✏️ CastingMain5 package poly.basic; public class CastingMain5 { public static ..
[Java - 기본] 다운캐스팅과 주의점 ✅ 다운캐스팅과 주의점 다운캐스팅은 잘못하면 심각한 런타임 오류가 발생할 수 있다. ✏️ CastingMain4 package poly.basic; // 다운캐스팅을 자동으로 하지 않는 이유 public class CastingMain4 { public static void main(String[] args) { Parent parent1 = new Child(); Child child1 = (Child) parent1; child1.childMethod(); // 문제 없음 Parent parent2 = new Parent(); Child child2 = (Child) parent2; // 런타임 오류 - ClassCastException child2.childMethod(); // 실행 불가 } } ..
[Java - 기본] 캐스팅의 종류 ✅ 캐스팅의 종류자식 타입의 기능을 사용하려면 다음과 같이 다운캐스팅 결과를 변수에 담아두고 이후에 기능을 사용하면 된다.Child child = (Child) poly;child.childMethod();하지만 다운캐스팅 결과를 변수에 담아두는 과정이 번거롭다. 이런 과정 없이 일시적으로 다운캐스팅을 해서 인스턴스에 있는 하위 클래스의 기능을 바로 호출할 수 있다.✅ 일시적 다운캐스팅✏️ CastingMain2package poly.basic;public class CastingMain2 { public static void main(String[] args) { // 부모 변수가 자식 인스턴스 참조 (다형적 참조) Parent poly = new Child(); // x001 //..
[Java - 기본] 다형성과 캐스팅 ✅ 다형성과 캐스팅부모 타입의 변수를 사용하게 되면 자식 타입에 있는 기능은 호출할 수 없다.✏️ CastingMain1package poly.basic;public class CastingMain1 { public static void main(String[] args) { // 부모 변수가 자식 인스턴스 참조 (다형적 참조) Parent poly = new Child(); // x001 // 단 자식의 기능은 호출할 수 없다. 컴파일 오류 발생 // poly.childMethod(); // 다운캐스팅 (부모 타입 -> 자식 타입) Child child = (Child) poly; // x001 child.childMethod(); }}🖥️ 실행 결과⚙️ ..
[Java - 기본] 다형성 시작 ✅ 다형성다형성(Polymorphism)은 이름 그대로 “다양한 형태”, “여러 형태”를 뜻한다.프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다. 📚 다형성 핵심 이론다형적 참조메서드 오버라이딩✅ 다형적 참조✏️ Parentpackage poly.basic;public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); }}✏️ Childpackage poly.basic;public class Child extends Parent { ..
[Java - 기본] Section9 - 문제와 풀이 ✅ 상속 관계 상품🔔 문제 설명쇼핑몰의 판매 상품을 만들어보자.🔔 요구 사항Book, Album, Movie 3가지 상품을 클래스로 만들어야 한다.코드 중복이 없게 상속 관계를 사용하자. 부모 클래스는 Item이라는 이름을 사용하면 된다.공통 속성 : name, priceBook : 저자(author), isbn(isbn)Album : 아티스트(artist)Movie : 감독(director), 배우(actor)📚 예시 코드package extends1.ex;public class ShopMain { public static void main(String[] args) { Book book = new Book("JAVA", 10000, "han", "12345"); Album album..
[Java - 기본] super - 생성자 ✅ super - 생성자상속 관계의 인스턴스를 생성하면 결국 메모리 내부에는 자식과 부모 클래스가 각각 다 만들어진다. Child를 만들면 부모인 Parent까지 함께 만들어지는 것이다. 따라서 각각의 생성자도 모두 호출되어야 한다.상속 관계를 사용하면 자식 클래스의 생성자에서 부모 클래스의 생성자를 반드시 호출해야 한다.✏️ ClassApackage extends1.super2;public class ClassA { public ClassA() { System.out.println("ClassA 생성자"); }}ClassA는 최상위 부모 클래스이다.✏️ ClassBpackage extends1.super2;public class ClassB extends ClassA { public Clas..