[TIL] Java 문법 종합 - 객체지향

김홍기·2026년 3월 19일

Java 문법

목록 보기
2/9

객체지향의 4가지 특징

  • 캡슐화 : 데이터의보호
  • 상속 : 재사용과 확장
  • 추상화 : 데이터의 계층적 표현
  • 다형성 : 객체지향의 꽃

객체지향의 4가지 특징 - 1) 캡슐화

  • 객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념

  • 접근제어자

  • 캡슐화가 된 데이터에 접근하는 방법

    • 게터 활용법

      public class Person { 
      private String secret;
      
      public String getSecret() {
      				return this.secret; // ✅ 객체의 secret 속성 반환
      }}
    • 세터 활용법

      public class Person { 
      private String secret;
      
      public void setSecret(String secret) {
      		this.secret = secret; // ✅ secret 속성 설정 및 변경
      }}

객체지향의 4가지 특징 - 2) 상속

  • 클래스간의 관계를 부모, 자식으로 바라보는 개념
  • 재사용성, 확장성!!!!!!!!!!
  • extends 키워드를 사용해서 상속관계 구현

super

  • 부모클래스의 멤버에 접근할 때 사용하는 키워드

    public class Child extends Parent {
    
    			private String familyName = "gim"
    
       public void superExample() {
           System.out.println("우리 " + this.familyName + " 가문은 ...");
           System.out.println("원래 가문의 이름은 " + super.familyName);
       }}
  • 부모 인스턴스의 생성자

    • 부모가 먼저 생성되고 자식이 생성

    • super는 항상 생성자의 첫 줄에 위치 !!

      public class Child extends Parent {
      
      		...
      
       public Child() {
           super(); // ✅ (1)부모클래스 생성자를 먼저 호출
           // 추가로직은 여기에 작성
       }}
           

overriding

  • 부모메서드를 자식 클래스에서 변경하여 재정의 하는 것
  • 오버라이드된 메서드는 @Override 키워드 붙이는 것 권장
class Child extends Parent {
		...
    
    @Override
    void introduceFamily() { // ✅ 자식클래스에서 재정의
        System.out.println("오버라이드");
    }}

추상클래스

  • abstract 키워드로 클래스 선언
  • 해당 키워드로 메서드를 선언하면 자식클래스에서 강제로 구현해야함

객체지향의 4가지 특징 - 3) 추상화

  • 특정 계층에서 필요한 본질적인 특성만 유지하고 불필요한 세부사항을 숨기는 객체지향의 특징

객체지향의 4가지 특징 - 4) 다형성

  • 하나의 타입으로 여러 객체를 다룰 수 있는 객체지향의 특징!!
public class Main {

    public static void main(String[] args) {

        // 다형성 활용
        Animal animal = new Cat();
        animal.exist(); // ✅
        animal.makeSound(); // ✅
    }}
  • 위의 방식대로 부모타입으로 자식타입을 다룰 수 있다.
  • 그 이유는 자동으로 형변환을 해주기 때문 !!!

1) 업캐스팅(UpCasting) - 자식 → 부모

  • 부모타입으로 자식타입을 다룰 수 이유!!
  • 주의사항
    • 자식 클래스의 고유기능을 활용할 수 없다.
    • 자식 클래스의 고유기능을 활용하려면 다운캐스팅이 필요하다.

2) 다운캐스팅(DownCasting): 부모 → 자식

public class Main {

    public static void main(String[] args) {

        // 다형성 활용
        Animal animal = new Cat();
        animal.exist();
        animal.makeSound();        
        Cat cat = (Cat) animal; // ✅ 다운캐스팅(부모Animal -> 자식Cat)
        cat.scratch(); // ✅ 자식 클래스의 기능 활용 가능
    }
}
  • 다운 캐스팅으로 자식 클래스의 고유메서드를 사용 가능
  • 주의사항
    • 잘못된 다운 캐스팅은 컴파일단계에서 감지할 수 없어서 위험!!!
    • ex) dog로 만들어진 것을 cat으로 사용하여도 컴파일이 된다.

다운캐스팅을 사용할 때 항상 instanceof 키워드 사용

public class Main {

    public static void main(String[] args) {

        Animal animal2 = new Dog();

        // ✅ 안전한 다운캐스팅(animal2 가 Cat 의 인스턴스 유형인지 확인합니다.)
        if (animal2 instanceof Cat) {
            Cat cat = (Cat) animal2;
            cat.scratch();
        } else {
            System.out.println("객체가 고양이가 아닙니다.");
        }
    }
}
profile
개발자 기록용

0개의 댓글