JAVA 22

메서드 참조 알아보기

메서드 참조(Method Reference)란?람다식보다 더 간결하게 기존에 이미 있는 메서드나 생성자를 참조할 수 있게 해주는 문법으로 람다식에서 이미 정의된 메서드를 그대로 가져다 쓸 때 사용한다. 사용방식 ::// 람다식list.forEach(name -> System.out.println(name));// 메서드 참조list.forEach(System.out::println);//위에 두 코드는 완벽히 같은 동작을 한다. 참조문법 종류 4가지유형에시설명정적 메서드 참조ClassName::staticMethod클래식의 static 메서드를 바로사용인스턴스 메서드 참조(특정 객체)object::instanceMethod특정 객체의 인스턴스 메서드 바로사용인스턴스 메서드 참조(임의 객체)ClassN..

JAVA 2025.07.03

제네릭, 함수형 인터페이스, 람다표현식에 대해 개념정리

🔎제네릭(Generic)이란?데이터 타입을 일반화시켜 코드의 재사용성을 높이는 기술로 클래스나 메서드가 어떤 타입이든 처리할 수 있게 만들어주는 문법이다. 왜 사용해야하는가?1. 코드의 재사용성 증가2. 컴파일 시 타입 체크 가능 (타입 안정성)3. 불필요한 형변환 제거 예시코드// T : 외부에서 받는 타입(T가 아니여도 상관없음 변수명같은 개념)public class Box { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}Box stringBox = new Box();stringBox.set("Hello");System.out.println(string..

JAVA 2025.07.03

추상클래스 vs 인터페이스

추상클래스와 인터페이스에 대해서 공부하다 보니 문득 궁금한 게 생겼다.인터페이스가 100% 다형성을 보장할 수 있게하고 추상클래스는 구현메서드를 선언할 수 있어서 일부 다형성을 보장하는데굳이 두개를 따로 나눠서 써야 할 필요가 있을까..?라는 의문에 대해서 추상클래스와, 인터페이스를 비교해 보고 왜 나눠 써야 하는지 정리하려 한다 비교항목추상 클래스인터페이스키워드abstract classinterface상속키워드extendsimplements다중 구현 가능 여부불가능가능메서드 구현 유무일부 구현 가능구현 불가 목적공통 기능 일부 구현 + 강제기능 규약(약속)만 정의(설계)포함 가능 요소일반 메서드(선택), 추상메서드(강제), 필드모든 메서드는 기본적으로 추상 메서드(100% 강제 구현), 상수[Java..

JAVA 2025.06.29

추상클래스와 인터페이스의 개념정리

🔎 추상클래스(Abstract Class)란 무엇인가?추상클래스란 객체지향 프로그램의 핵심인 다형성을 보장하기 위해서 사용되는 수단 중 하나로 완성되지 않은 클래스를 의미한다. 직접 객체를 생성(인스턴스) 할 수 없고 상속받는 자식 클래스가 완성시켜야만 사용할 수 있다 즉, 기능의 골격은 부모가 정의하고 구체적인 동작은 자식이 정하게끔 강제하는 방식이다. 왜 사용해야 하는가공통된 기능은 부모 클래스에서 정의하고 객체마다 달라져야 하는 동작은 자식클래스에서 개별적으로 구현하도록 하기 위해 추상 클래스를 사용한다// 부모 클래스public class Animal { public void eat() { System.out.println("동물처럼 먹는다"); }}// 자식클래스1. ..

JAVA 2025.06.29

상속, 재정의, 객체 형 변환, 다형성에 대해서 알고 넘어가자

🔎 상속이란?부모 클래스의 속성과 메서드(기능)를 자식 클래스가 물려받는 것을 의미한다. 즉, 기존에 존재하는 클래스를 확장해서 새로운 클래스를 만드는 것이다 왜 사용하는가1. 공통된 기능을 묶어 중복코드를 줄이고 코드의 재사용성을 높이기 위해서2. 유지보수성 증가3. 계층적 구조 설계 사용 예시키워드 : extends아무런 메서드를 사용하지 않은 Cat 클래스에서도 eat() 메서드를 사용하여 동작할 수 있다. 이처럼 동일한 기능 등을 사용할 때 상속기능을 사용하게 된다.// 부모 클래스public class Animal { public void eat() { System.out.println("동물처럼 먹는다"); }}// 자식클래스1. public class Dog exte..

JAVA 2025.06.29

[JAVA] JVM에대해서 알아보고 메모리 구조 파헤쳐 보기

JVM(Java Virtual Machine)이란?jdk를 설치하면 자동으로 함께 설치되는 눈에 보이지 않는 소프트웨어로 자바프로그램을 실행시켜 주는 가상의 컴퓨터라고 할 수 있다. JVM은 무엇을 하는가?자바로 작성된 프로그램은 바로 실행할 수가 없다 그렇기 떄문에 JVM은 자바로 작성된 프로그램을 실행 가능한 형태로 변환하고 실행하는 역할을 수행하며 실행 과정은 아래와 같다. 1. 자바 소스코드(.java)파일을 컴파일러(Compiler)를 통해 바이트코드(.class)로 변환2. .class 파일을 JVM의 ClassLoader에게 전달3. 클래스로더에서 JVM 런타임 영역으로 할당(로딩)하여 메모리에 올린다.※ 바이트코드로 만든 .class 파일이 있다면 JVM 위에서 실행되므로, 개발환경과 ..

JAVA 2025.06.29

정보은닉과 setter, getter 개념정리

정보은닉(Information Hiding)이란?객체의 내부 데이터를 외부에서 직접 접근하지 못하게 숨기고 데이터의 변경이나 조회를 클래스 내부에서만 제어하도록 하는 객체지향 원칙이다.즉, 객체의 상태정보는 외부에서 직접 조작이 불가능하고 정해진 메서드를 통해서만 간접적으로 접근하게 하는 방식이다. 왜 숨겨야 할까?1. 잘못된 값이 들어오는 것을 막기 위해 [상태정보에 나이를 표현하는 age가 있을 때 직접접근을 허용하게 되면 -100살도 될 수 있음 오작동]2. 나중에 내부 구조를 바꿔도 외부에 영향을 주지 않기 위해 [변수명을 변경해도 메서드만 유지하면 위부 코드는 그대로 유지 가능]3. 객체 스스로 자신의 상태를 통제하도록 하기 위해 [객체가 주도적으로 데이터관리 = 캡슐화] getter와 set..

JAVA 2025.06.27

[JAVA] 접근 제어자와 패키지, 클래스 접근법 개념정리

접근제어자란(Access Modifier)?접근 제어자는 클래스를 설계할 때 고려해야 할 요소 중 하나로 클래스, 변수, 메서드 등에서 접근 가능한 범위를 제한하는 역할을 가진 키워드이다.즉, 객체 내부 멤버(메서드, 필드(멤버변수))에 접근제어자를 사용할 수 있어 객체 상호 간의 접근을 제어할 때 사용된다. 목적캡슐화 : 객체의 내부 구현을 숨기고(정보 은닉) 필요한 부분만 외부에 공개보안 : 실수로 객체 내부의 정보를 건들지 않도록 보호 접근제어자 종류 및 설명접근제어자설명public모든 패키지에서 접근가능private해당 클래스 내부에서만 접근 가능 [외부, 하위클래스에서도 접근 불가]protected같은 패키지 또는 상속받은 자식 클래스에서 접근 가능 [외부 패키지에서 보통은 접근불가 상속한 ..

JAVA 2025.06.27

메서드의 오버로딩과 정적바인딩 개념정리

메서드의 오버로딩(Overloading)이란?- 하나의 클래스 내에서 같은 이름의 메서드를 매개변수의 '타입'이나 '개수'에 따라 여러 개 정의할 수 있는 객체지향 프로그래밍 기법 메서드의 시그니처(signature)란?1. 매서드 이름 + 매개변수의 개수2. 매서드 이름 + 매개변수의 타입 자바 vs 자바스크립트 예시 비교자바스크립트는 동적 타입 언어이기 때문에 같은 이름의 함수를 중복 선언하면 덮어쓰기 되어 마지막 선언만 유효자바는 정적 타입 언어이므로, 오버로딩을 허용한다.// javascriptfunction test() { console.log("첫 번째"); }function test() { console.log("두 번째"); } // 덮어쓰기됨test(); // "두 번째" 출력 - 오류 ..

JAVA 2025.06.24

생성자와 this 개념정리

생성자(Constructor)란?생성자는 객체가 생성될 때 호출되는 특별한 메서드로, 객체의 초기상태(속성)를 설정하는 역할을 해준다. 생성자 특징 7가지1. new 연산자에 의해서 호출이 된다. 2. 자신이 가지고가 쓴 멤버들을 메모리에 올려 객체를 생성하는 역활을 한다.3. 메서드의 이름은 클래스이름과 동일해야 한다.4. 접근제한자가 public인 경우에만 호출이 된다. 5. 모든 클래스는 기본생성자(default constructor)를 가지고 있다.6. 객체의 초기화를 위해서 사용된다.7. 리턴 타입이 없다. (즉, void를 사용하지 않는다.) // class로 Car 설계public class Car { String color; // 자동차의 색상 int speed; // 자동차의..

JAVA 2025.06.24