본문 바로가기
Spring-Java/Spring

Java 기본 개념 정리(feat. 인터페이스, 다형성, ...)

by 현대타운301 2023. 10. 25.

 

기본 개념 및 용어

 

객체지향 프로그래밍

Object Oriented Programming, OOP

프로그램을 수많은 '객체(Object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식

객체는 하나의 역할을 수행하는 메소드와 변수(데이터)의 묶음

 

 

인터페이스(interface)

서로 다른 두 객체를 연결해주는 역할을 수행

 

* 예를 들어 아래와 같이 분업을 한다고 가정해보자.

     - A : 여러 가지 메소드를 가지고 특정 프로그램의 main을 구성

     - B : 각 메소드의 기능을 실제로 구현

이 때 잘 정의된 인터페이스만 있으면 B가 실제로 기능을 구현해두지 않아도 A는 main을 구성해 나가는데 지장이 없음

 

* <구현부> 규칙

1) 어떤 인터페이스를 구현하는지 'implements'로 알려줘야 함

2) 인터페이스에 정의된 모든 메소드를 오버라이딩(재정의) 해야 함

 

 

 

다형성

하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될 수 있는 것을 말한다.

오버라이딩과 오버로딩은 물론, 부모 타입  객체에 자식 타입의 객체가 들어가는 경우도 다형성의 일종

     - ex) List<> list = new ArrayList<>();  →  List는 interface로, 하위(자식) 클래스인 ArrayList type의 객체를 담을 수 있음

 

 

오버라이딩과 오버로딩

상위 클래스에서 정의된 메소드를 하위 클래스에서 재정의해서 사용 = overriding(오버라이딩)

매개변수의 개수나 type을 달리해서 같은 이름의 메소드(혹은 생성자)를 사용 = overloading(오버로딩)

 

 

JVM(Java Virtual Machine)

Java로 개발한 프로그램(소스파일)을 컴파일하여 만들어지는 '바이트코드' 파일을 실행시키기 위한 가상머신(VM)

각 운영체제(OS) 환경에 맞는 JVM이 필요함(OS에 따라 JDK 버전이 다른 이유)

JRE(Java Runtime Environment)에 포함되어 있음

 

* Hello.java 실행 과정

Hello.java(소스파일) → javac 명령어 → Hello.class(바이트코드파일) → java 명령어 → 기계어(00100111...) → JVM → 각 OS 환경에 맞는 기계어로 번역 → 결과 출력

 

 

 

 

 

 

'Spring-Java > Spring' 카테고리의 다른 글

Day53_Spring Legacy Project 설정  (0) 2023.12.14
Day51_MVC Architecture  (2) 2023.12.06
Day48_STS, Tomcat Server 설치 및 환경 설정  (0) 2023.10.27
Day47_Apache Tomcat  (0) 2023.10.26
Day46_Spring Framework  (1) 2023.10.25