Day 13 - 26.09.10

서코딩·2026년 9월 10일

자바

목록 보기
13/19

0. 복습

추상 클래스

  • 미완성된 클래스
  • 추상메서드(미완성된 메서드)가 한개라도 있는 클래스는 반드시 추상 클래스가 되어야 한다
abstract class 클래스명{
	abstract 리턴타입 메서드명();
    일반 메서드도 선언 가능
}
  • 추상 메서드는 상속받은 자식 클래스에서 반드시 재정의하여야 한다
    => 강제성 부여

인터페이스

  • 클래스처럼 타입으로 사용
  • 기본적으로 상수와 추상 메서드만 선언할 수 있다

1) 인터페이스 선언

interface 인터페이스명 {
	public static final 자료형 필드명;
    public abstract 리턴타입 메서드명();
}
  • 인터페이스는 implements(구현)한다

2) 인터페이스의 특징

  • 다중 구현이 가능하다
  • 인터페이스는 extends(상속)이 가능하다
  • 하나의 클래스에 extends와 implements 동시에 가능

1. 인터페이스 업데이트

(자바 버전 확인)
window + r => cmd(명령 프롬프트)
java -version

: java8버전 이후로 인터페이스에 선언할 수 있는 메서드의 종류가 추가됨
(1) default 메서드 (jdk8)
(2) static 메서드 (jdk8)
(3) private 메서드 (jdk8)
=> 위 3개의 메서드 모두 구현부({}중괄호)를 가질 수 있는 메서드

1) 인터페이스와 모호성(Ambiguity)

  • 자바는 모호성을 방지하기 위해 다중 상속을 허용하지 않는다
  • 인터페이스는 다중 구현이 가능한데 구현 가능한 메서드가 추가되면서 모호성 문제가 발생되었다

2) 인터페이스의 default 메서드 모호성 해결 방법

  • 2개 이상의 인터페이스를 하나의 클래스에서 구현할 때
    동일한 선언부를 가진 default 메서드가 존재한다면
    모호성이 발생한다
  • 모호성을 해결하기 위해 구현 클래스에서 재정의를 한다

2. 프로그래밍 패러다임

  • 프로그램을 설계하고 구현하는 방법론이나 스타일을 "프로그래밍 패러다임"이라고 한다
  • 쉽게 말하면 방법론이다(어떻게, 어떤 구조로 프로그램을 만들 것인가?)
  • 대표적으로 객체 지향 프로그래밍, 절차적 프로그래밍, 함수형 프로그래밍, 선언형 프로그래밍이 있다

1) 프로그래밍 패러다임의 종류
: 요리 방식으로
(1) 객체 지향 프로그래밍 :
요리 재료(데이터)와 조리법(메서드)을 하나의 레시피(클래스)로 묶어 요리한다
ex) 피자 레시피(클래스)에는 재료(속성)와 만드는 방법(메서드)이 모두 포함되어 있다

(2) 절차적 프로그래밍 :
요리 과정을 순서대로 나열하여 진행
ex) 1. 재료 준비 -> 2. 볶기 -> 3. 양념 넣기 -> 4. 접시 담기

(3) 함수형 프로그래밍 :

  • 각 요리 단계를 독립적인 함수로 만들고, 이들을 조합하여 요리한다
    ex) 채소 썰기(당근) -> 볶기(썬 당근) -> 양념하기(볶은 당근)
  • 함수형은 선언형의 한 종류(선언형의 큰 범주에 속하는 게 함수형)

(4) 선언형 프로그래밍 :
원하는 요리의 최종 결과만 명시하고, 과정은 시스템에 맡김(과정을 생각하지 않음)
ex) "야채볶음을 만들어줘"(구체적인 과정은 명시하지 않음)

  • 각 요리 방식(패러다임)은 상황과 목적에 따라 장단점이 있으며
  • 요리사(프로그래머)는 상황에 맞는 적절한 방식을 선택해야 한다

2) 객체 지향 프로그래밍(Object-Oriented-Programming, OOP)

  • 프로그램을 객체들의 모음으로 설계하고 구현하는 프로그래밍 방법론
    => 쉽게 말해 객체가 주인공
  • 자바 객체 지향 프로그래밍 언어 => 객체 지향에 특화된 언어

(1) OOP의 주요 개념
(1-1) 클래스와 객체를 사용
(1-2) 캡슐화

  • 데이터와 데이터를 처리하는 메서드를 하나로 묶음
    (클래스는 필드와 연관된 메서드를 가짐)
  • 데이터 은닉을 통해 객체 내부 구현을 숨김
    (접근 제한자를 활용하여 외부에 공개되는 멤버를 제한)

(1-3) 상속

  • 기존 클래스의 속성과 기능을 새로운 클래스가 물려받아 재사용
  • 코드 재사용성을 높이고 클래스간의 관계를 구현

(1-4) 다형성

  • 하나의 것이 여러 형태를 가지는 성질
  • 하나의 이름의 메서드가 다양한 형태로 동작(오버로딩, 오버라이딩)
  • 하나의 참조 변수로 여러 객체를 참조(부모 타입 변수로 자식 객체를 가리킴)

(1-5) 추상화

  • 복잡한 개념에서 핵심 개념을 추출함
  • 여러 클래스에서 공통적으로 사용하는 메서드는 인터페이스나 추상 클래스로 추출해서 구현

3. Java API

라이브러리

  • 특정 기능을 수행하기 위해 만들어 놓은 코드의 집합(클래스, 인터페이스 등으로 구성됨)
  • 라이브러리는 패키지 단위로 구성됨(1개 이상의 패키지로 구성됨)
  • 개발자가 모든 것을 바닥부터 만들 수 없음(시간이 오래걸림)
    그래서 자주 사용되는 기능들을 라이브러리로 만들어 제공함
  • 라이브러리는 개발자가 코드를 작성할 때 가져다 사용하는 도구의 역할을 함

1) Java API(Application Programming Interface) : 표준 라이브러리, 내장 라이브러리

  • java에서 제공된 기본 내장 라이브러리, JDK에 포함됨
    (자바 설치하면 기본적으로 내장되어 있음)
  • 'System.out.println()', 'sc.nextInt()' 같은 것들이 모두 Java API에서 제공하는 것들
  • 일반적으로 API 또는 Open API 라고 부르는 것들과는 다른 개념임

2) 외부라이브러리(서드파티 라이브러리)

  • java에서 내장된 라이브러리가 아닌 다른 외부 개발자들이 만들어 제공하는 라이브러리
  • 다른 개발자들이 만들어 .jar 파일로 배포하면 우리가 받아서 사용할 수 있다

3) 이클립스 JAR 만들기
(1) JAR파일 배포
배포할 클래스 또는 패키지 우클릭 > Export > JAVA > JAR file > 경로 선택 > Export Java source .... 체크 > finish

(2) 외부 JAR 파일 추가
배포한 JAR 파일 다운받기 > 프로젝트 우클릭 > Build Path > Configure Bulid Path > Libraries 탭 > Add External Jars > 저장된 .jar 파일 추가 > Apply > Orders and Exports 탭 > jar 파일 Select > Apply and Close

4. Object 클래스

  • 모든 클래스의 최상위 부모 클래스이다
  • 상속을 받지 않으면 자동으로 Object가 상속된다

1) Object 클래스의 주요 메서드
(1) toString()
객체를 출력했을 때 나타낼 값을 정의한다
기본구현: 클래스명@16진수해쉬코드 -> 참조값
우리가 재정의하여 원하는 값을 출력하도록 만들 수 있다
(주로 객체 필드를 출력하는 목적으로 재정의)

(2) equals()

(3) hashCode()

profile
서코딩 127 !

0개의 댓글