당우 일기장

자바 기초문법 2 본문

JAVA

자바 기초문법 2

당우 2025. 4. 8. 17:34

자바 문법 정리

자바의 기초를 넘어 더 깊이 들어가볼 시간이에요! 이번 문서에서는 상속, 인터페이스, 패키지 등 문법을 "문법 - 설명" 형식으로 정리했습니다. 객체지향 프로그래밍의 핵심을 이해하고 활용할 수 있도록 핵심만 간결하게 담았으니, 하나씩 따라가며 익혀보세요!


상속 (Inheritance)

  • 클래스 상속 - class 자식클래스 extends 부모클래스 { ... }:
    부모 클래스의 속성과 메서드를 물려받아 코드 재사용성을 높임. 예: class Dog extends Animal {}

  • 메서드 오버라이딩 - @Override 리턴타입 메서드명(매개변수) { ... }:
    부모 클래스의 메서드를 자식 클래스에서 재정의. 예:

    @Override
    void sound() { System.out.println("멍멍"); }
  • super 키워드 - super.멤버 또는 super(매개변수):
    부모 클래스의 멤버(변수, 메서드)나 생성자를 호출. 예: super("부모"); (생성자 호출)

  • 업캐스팅 - 부모타입 변수 = 자식객체;:
    자식 객체를 부모 타입으로 참조. 자동 형변환. 예: Animal animal = new Dog();

  • 다운캐스팅 - (자식타입) 부모변수;:
    부모 타입으로 참조하던 객체를 자식 타입으로 변환. 명시적 형변환 필요. 예: Dog dog = (Dog) animal;


인터페이스 (Interface)

  • 인터페이스 선언 - interface 인터페이스명 { ... }:
    메서드 선언만 포함하는 설계도. 구현은 클래스가 담당. 예: interface Flyable { void fly(); }

  • 인터페이스 구현 - class 클래스명 implements 인터페이스명 { ... }:
    인터페이스의 메서드를 클래스에서 구현. 예:

    class Bird implements Flyable {
        public void fly() { System.out.println("날아요"); }
    }
  • 다중 구현 - implements 인터페이스1, 인터페이스2:
    여러 인터페이스를 한 클래스에서 구현 가능. 예: class Drone implements Flyable, Rechargeable { ... }

  • default 메서드 - default 리턴타입 메서드명() { ... }:
    인터페이스 내에서 기본 구현 제공 (Java 8 이상). 예:

    default void land() { System.out.println("착륙"); }
  • static 메서드 - static 리턴타입 메서드명() { ... }:
    인터페이스 자체에서 호출 가능한 정적 메서드. 예: static void info() { System.out.println("정보"); }


패키지 (Package)

  • 패키지 선언 - package 패키지명;:
    클래스를 폴더처럼 묶어 관리. 코드 충돌 방지. 파일 상단에 작성. 예: package com.example;

  • 임포트 - import 패키지명.클래스명;:
    다른 패키지의 클래스를 가져와 사용. 예: import java.util.Scanner;

  • 와일드카드 임포트 - import 패키지명.*;:
    패키지 내 모든 클래스를 임포트. 예: import java.util.*;

  • 패키지 접근 제어 - public, protected, default, private:
    클래스나 멤버의 접근 범위를 지정. 예: public class MyClass {} (모두 접근 가능)


접근 제어자와 기타 중급 문법

  • public - public 타입 멤버;:
    모든 곳에서 접근 가능. 예: public int number;

  • protected - protected 타입 멤버;:
    같은 패키지 또는 상속받은 클래스에서 접근 가능. 예: protected String name;

  • default (package-private) - 타입 멤버;:
    접근 제어자를 생략하면 같은 패키지 내에서만 접근 가능. 예: int count;

  • private - private 타입 멤버;:
    클래스 내부에서만 접근 가능. 예: private double balance;

  • final 키워드 - final 타입 변수명;:
    값 변경 불가(상수) 또는 상속/오버라이딩 방지. 예: final int MAX = 100;

  • abstract 클래스 - abstract class 클래스명 { ... }:
    추상 메서드를 포함 가능, 객체 생성 불가. 예:

    abstract class Shape {
        abstract void draw();
    }
  • static 키워드 - static 타입 멤버;:
    클래스 수준에서 공유되는 변수나 메서드. 객체 없이 호출 가능. 예: static int counter;


예외 처리와 중급 활용

  • throws - 메서드명() throws 예외타입:
    메서드에서 발생한 예외를 호출한 곳으로 넘김. 예: void process() throws IOException { ... }

  • throw - throw new 예외타입();:
    예외를 명시적으로 발생시킴. 예: throw new IllegalArgumentException("잘못된 값");

  • 다중 catch - catch (타입1 | 타입2 변수) { ... }:
    여러 예외를 한 번에 처리 (Java 7 이상). 예:

    try { ... } catch (IOException | SQLException e) { e.printStackTrace(); }

마무리

이 문서로 자바의 중급 문법(상속, 인터페이스, 패키지 등)을 정리해봤어요! 객체지향 프로그래밍의 핵심인 상속과 인터페이스를 이해하면 더 유연하고 확장 가능한 코드를 작성할 수 있어요. 패키지와 접근 제어자는 프로젝트 규모가 커질수록 중요해지니 꼭 익혀두세요. 다음엔 컬렉션 프레임워크나 스레드 같은 고급 주제로 넘어가볼까요? 궁금한 점 있으면 언제든 물어봐주세요! 😊

'JAVA' 카테고리의 다른 글

스프링 입문 전 필수 자바 문법 리스트  (1) 2025.04.08
자바 중급 문법  (1) 2025.04.08
자바 기초 문법  (0) 2025.04.08