캠슐화의 개념 캡슐화는 클래스의 내부 상태와 동작을 외부로부터 숨기는 것을 의미합니다. 데이터와 그 데이터를 다루는 메서드를 하나로 묶어 클래스 내부로 숨기는 개념을 나타냅니다. 캡슐화를 통해 데이터의 접근을 제어하고, 외부에서 직접적인 접근을 허용하지 않고 메서드를 통해 간접적으로 접근하도록 합니다. 이를 통해 클래스는 자신의 내부 구현을 숨기고, 외부에는 필요한 기능만 노출시킴으로써 클래스의 사용을 단순화합니다. 캡슐화의 이점 정보 은닉 : private를 이용하여 외부 접근을 차단합니다. 이를 통해 내부 데이터의 부적절한 변경을 방지합니다. 코드 유연성과 확장성 향상 : 클래스의 내부 구현을 숨기고 외부로 인터페이스를 노출시킴으로써 내부 구현이 변경되더라도 외부 코드에 영향을 주지 않습니다. 그래서..
자바에서는 클래스를 이용한 다중 상속을 지원하지 않습니다. 하지만 인터페이스를 이용해서 다중 상속을 지원하고 있습니다. 인터페이스는 메서드의 집합을 추상화하여 정의합니다. 이렇게 정의된 메서드는 구현 내용을 포함하지 않습니다. 하위 클래스에서 구현을 해야 합니다. 다형성을 이용하여 많은 클래스를 동일한 타입으로 나타낼 수 있습니다. interface 키워드를 이용하여 생성합니다. 인터페이스 특징 지역 변수 public static final 생략 가능합니다. default, static메서드로 구현가능합니다.(JAVA 8 이상) private를 이용해서 구현가능합니다.(JAVA 9 이상) 인터페이스 예제 // 인터페이스 정의 public interface Animal { // public static f..
공통된 특성과 기능을 정의하는 것입니다. 추상 클래스는 직접 인스턴스화하지 못합니다. abstract 제어자를 이용하여 추상화를 만듭니다. 추상 클래스의 특징 공통된 특성 : 서로 다른 클래스들이 가지는 공통된 특성과 기능을 하나로 묶어 추출합니다. 일반 메서드와 추상 메서드를 정의할 수 있습니다. 추상 메서드 : 구현 내용이 없는 메서드로 하위 클래스에서 반드시 오버라이딩하여 구현해야 합니다. 인스턴스화 : 추상클래스는 직접 인스턴스화를 할 수 없습니다. 추상 클래스를 상속한 하위 클래스로 객체를 생성해야 합니다. 추상클래스 예제 abstract class Animal { String type; abstract void makeSound(); void getType() { System.out.print..
캐스팅이란 상속 관계에 있는 클래스에서 서로 간의 형변환을 말합니다. 업캐스팅 자식 클래스의 객체에서 부모 클래스의 타입으로 형변환되는 것을 말합니다. 다형성을 이용하여 부모 클래스의 공통된 기능을 여러 종류의 자식 클래스에서 다룰 수 있게 해줍니다. 다운캐스팅 업캐스팅과 반대로 부모 클래스 객체를 자식 클래스 타입으로 형변환되는 것을 말합니다. 상속에서 자식 클래스는 부모 클래스에서 확장된것이기 때문에 인스턴스 생성없이 다운캐스팅을 하게 되면 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..