본문 바로가기

JAVA

(51)
Java21(Zulu21)이상으로 Spring Boot를 돌릴때 뜨는 경고문 프로젝트를 하나 만들었다 새로운 마음으로 zulu25, boot 4.0.6 버전을 사용했다C:\Users\index\.jdks\azul-25.0.3\bin\java.exe 그랬더니.. 위와 같은 경고문이 떴다WARNING: A restricted method in java.lang.System has been calledWARNING: java.lang.System::load has been called by com.intellij.rt.execution.application.AppMainV2 in an unnamed module (file:/C:/Program%20Files/JetBrains/IntelliJ%20IDEA%202024.1/lib/idea_rt.jar)WARNING: Use --enable..
추상 클래스와 인터페이스, 선택 기준과 활용 전략에 대해 추상 클래스와 인터페이스의 개념 비교추상 클래스(Abstract class)메서드 바디가 없는 추상 메서드(abstract class)를 0개 이상 포함할 수 있는 클래스공통 속성(필드)와 기본 기능(구현된 메서드)를 함께 정의할 수 있다단일 상속만 가능하며, extends 키워드를 사용한다(상속)인터페이스(Interface)상수(public static final 필드)와 추상 메서드(public abstract 메서드)로만 구성된 일종의 계약서임다중 구현이 가능하며, implements 키워드를 사용한다Java 8부터는 default / static 메서드를 통해 일부 구현도 가능하다언제 추상클래스를 사용해야 하는가? 1. 공통 속성과 기본 기능이 필요한 경우모든 동물은 이름이 존재하고, 먹을 수 있..
인터페이스(interface) 자바에서 추상화를 구현하기 위한 가장 기본적이고 강력한 도구인터페이스는 객체들이 서로 상호작용을 할 수 있도록 돕는 약속된 규격을 정의하는 장치이다 interface는 클래스가 반드시 구현해야 할 기능의 목록(추상 메서드)만 정의한다기본적으로 모든 메서드는 public abstract, 모든 필드는 public static final로 간주된다구현체 클래스는 인터페이스에 정의된 모든 메서드를 반드시 구현해야만 한다인터페이스는 다중 구현(multiple inheritance)이 가능하다기본 구조public interface InterfaceEx { int ROCK = 1; // public static final 생략 가능 int SCISSORS = 2; int PAPER = 3; ..
final 키워드 final 키워드는 자바에서 "변경불가", "확장불가"의 의미를 가지는 제어자임클래스, 메서드, 변수에 사용할 수 있으며 사용하는 위치에 따라 의미가 달라진다 1. 위치에 따른 의미 정리클래스 : 상속이 불가능한 클래스메서드 : 오버라이딩이 불가능한 메서드변수 : 값 변경이 불가능한 상수, 일반적으로 static이 함께 붙으며 한번만 할당이 가능하다final은 결국 대상의 변경이나 확장 자체를 금지하는 키워드라는 점에서 어떤 위치에서든 공통적인 성격을 가진다 예final class FinalClass { final int x = 100; // final, 변경 불가 final int getValue() { // 오버라이딩 할 수 없음 final int localVar = x; // 지..
추상 클래스 0개 이상의 추상 메서드(메서드의 바디가 없는 메서드)를 포함하거나 객체 생성을 제한하기 위해 선언된 클래스임abstract 키워드를 사용하여 정의하며, 직접 객체를 생성할 수 없다 추상 메서드를 0개 이상 포함할 수 있다직접 인스턴스를 생성할 수 없다완성된 메서드(일반 메서드)도 함께 포함할 수 있다상속을 통해 하위 클래스에서 추상 메서드를 오버라이딩하여 완성해야 사용할 수 있다abstract class AbstractExample { abstract void method(); // 추상 메서드 public void method2() { System.out.println("완성된 메서드 또한 정의할 수 있다"); }} 추상 메서드의 사용 목적1. 상속 구조에서 유연한 설계를 위해서 사..
abstract 제어자 자바에서 abstract 키워드는 "미완성"을 나타내는 제어자임이 키워드는 추상 클래스와 추상 메서드를 정의할 때 사용한다 1. abstract 키워드abstract method : 메서드 시그니처만 존재하고, 본문(메서드 바디)이 없는 메서드abstract class : 하나 이상의 추상 메서드를 포함하거나 객체 생성을 제한하기 위해 선언된 클래스abstract class AbstractExample { abstract void hello(); // 추상 메서드} 2. abstract의 특징abstract 메서드메서드의 본문이 없는 미완성 메서드이다구현이 없기 때문에 하위 클래스에서 반드시 오버라이딩(Override) 해야한다abstract 클래스추상 메서드를 포함하거나, 직접 객체 생성을 막기 위해..
추상화(Abstraction) 자바에서 추상화는 추상 클래스와 인터페이스를 통해서 구현한다 추상화사물이나 개념의 공통적인 본질을 추출하여 단순화하는 것자바에서는 객체들의 공통적인 속성과 기능을 뽑아 상위 클래스로 정의하는 작업복잡한 개념을 단순하고 명확하게 모델링할 수 있음가령, 자동차와 오토바이의 공통 기능을 추출해서 Vehicle이라는 상위 클래스를 만들 수 있다 필요성복잡한 시스템을 단순하게 표현할 수 있음핵심 요소만 모델리해서 시스템의 이해도를 높임공통점을 기준으로 설계하면 코드 재사용성이 높아짐중복 코드 제거, 유지보수 비용을 절감할 수 있음유연한 구조 설계 가능구체 구현에 의존하지 않고 인터페이스 기반 설계가 가능해짐기능 확장과 교체가 용이함새로운 클래스가 기존 구조를 따르기만 하면 호환이 가능함추상화 구현법추상 클래스..
instanceof instanceof 연산자는 참조변수의 타입 변환(캐스팅)이 가능한지의 여부를 boolean 값으로 반환한다클래스의 상속관계나 다형성이 복잡해질수록, 객체가 실제 어떤 타입의 인스턴스인지 코드상에서 직접 파악하기 어려워지는데, 이 때 instanceof를 통해 안전하게 형변환이 가능한지의 여부를 판단할 수 있다기본 문법 참조변수 instanceof 클래스명 참조변수가 해당 클래스나 그 자식 클래스의 인스턴스라면, true를 반환한다그렇지 않으면 false를 반환한다참조변수가 null이면, 항상 false를 반환한다class Animal {}class Bat extends Animal {}class Cat extends Animal {}public class InstanceOfExample { public..