객체의 타입을 확인하는 데 사용되는 연산자입니다. 이 연산자는 객체가 특정 클래스의 인스턴스인지, 또는 그 클래스의 하위 클래스의 인스턴스인지 여부를 판단하는 데 활용됩니다. 사용법 // true or false 반환 if(객체 instanceof 클래스) { // true면 객체는 해당 클래스의 인스턴스 } 예제 class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Main { public static void main(String[] args) { Animal animal = new Dog(); if (animal instanceof Dog) { System.out.println(“dog); } else..
캐스팅이란 상속 관계에 있는 클래스에서 서로 간의 형변환을 말합니다. 업캐스팅 자식 클래스의 객체에서 부모 클래스의 타입으로 형변환되는 것을 말합니다. 다형성을 이용하여 부모 클래스의 공통된 기능을 여러 종류의 자식 클래스에서 다룰 수 있게 해줍니다. 다운캐스팅 업캐스팅과 반대로 부모 클래스 객체를 자식 클래스 타입으로 형변환되는 것을 말합니다. 상속에서 자식 클래스는 부모 클래스에서 확장된것이기 때문에 인스턴스 생성없이 다운캐스팅을 하게 되면 ClassCastException 에러가 발생합니다. 업캐스팅 다운캐스팅 예제 class Parent { void showName() { System.out.println("parent name"); } } class Child extends Parent { @O..
하나의 객체로 다양한 데이터 타입을 가질 수 있어서 다양한 동작을 수행할 수 있게 합니다. 다형성의 세 가지 형태 1. 메서드 오버로딩 : 같은 이름의 메서드를 여러 개 정의하고, 매개변수의 타입, 개수, 순서를 다르게 하여 다양한 입력에 대응할 수 있도록 하는 것입니다. public class Calculator { // 정수 두 개를 더하는 메서드 int add(int a, int b) { return a + b; } // 실수 두 개를 더하는 메서드 double add(double a, double b) { return a + b; } // 문자열 두 개를 합치는 메서드 String add(String a, String b) { return a + b; } } 2. 메서드 오버라이딩 : 부모 클래스..
메서드 오버라이딩은 객체 지향 프로그래밍에서 하위 클래스가 상위 클래스의 메서드를 재정의하여 사용하는 개념입니다. 이를 통해 상속 관계에서 하위 클래스는 자신에 맞게 부모 클래스의 메서드를 재구현할 수 있습니다. 메서드 오버라이딩은 다형성의 핵심 원리입니다. 메서드 오버라이딩의 조건 메서드 이름이 동일해야 합니다. 매개변수의 개수, 타입, 순서가 모두 동일해야 합니다. 리턴 타입이 같거나 하위 타입이어야 합니다. 접근 제어자는 부모 클래스의 메서드보다 범위가 더 축소될 수 없습니다. 부모 클래스의 메서드가 final이 아니어야 합니다. 부모 클래스의 메서드보다 많은 수의 예외를 처리할 수 없습니다. 메서드 오버라이딩 예제 class Animal { void makeSound() { System.out.p..
super 키워드 역할 상속 관계에서 부모 클래스의 멤버에 접근하고 활용하는데 사용됩니다. 자식 클래스에서 동일한 이름의 멤버 변수가 있을 경우, super 키워드를 통해 부모 클래스의 멤버 변수에 접근할 수 있음을 의미합니다. 자식 클래스에서 오버라이딩을 하고 super 키워드를 사용하면 부모 클래스의 기능(메서드)을 확장할 수 있습니다. super 키워드 멤버변수 예제 class Parent { String name = "부모"; } class Child extends Parent { String name = "자식"; public void show() { System.out.println(name); // 자식 System.out.println(this.name); // 자식 System.out.p..
상속의 정의 상속은 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받는 개념을 의미합니다. 이는 자식 클래스(하위 클래스)가 부모 클래스(상위 클래스)의 속성과 메서드를 재사용하고 확장할 수 있도록 합니다. 상속의 개념 부모 클래스의 속성과 메서드를 자식 클래스에서 상속받아 자신의 기능을 추가하거나 변경하여 확장할 수 있습니다. 부모 클래스를 수정하지 않고 자식 클래스를 통해 새로운 기능을 추가할 수 있습니다. 상속 예제 // 부모 클래스 class Animal { void makeSound() { System.out.println("동물 소리"); } } // 자식 클래스 class Dog extends Animal { // 부모 클래스의 메서드를 오버라이딩하여 재정의 @Override void m..