BACKEND/JAVA 15

제네릭(Generic) 프로그래밍 이해하기

제네릭 자료형 정의. 자바 제네릭(Generic)은 자바에서 도입된 타입 매개변수화 기능입니다. 제네릭을 사용하면 클래스나 메서드를 정의할 때 타입을 매개변수로 받아서 재사용할 수 있습니다. 이는 코드의 재사용성과 유연성을 높여줍니다. - 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언 - 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 - 컬렉션 프레임워크에서 많이 사용되고 있음 제네릭 자료형을 사용하는 예시. 술을 만들 때 다양한 재료를 기반으로 만들 수 있습니다. 와인은 포도, 맥주는 맥아를 주된 재료로 만들어 집니다. 이를 코드로 만들어 ..

BACKEND/JAVA 2023.06.11

자바 클래스 - Class 클래스

Class 클래스. 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일이 생성 됩니다. Class 클래스는 컴파일 된 class 파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드가 제공됩니다. Class.forName("클래스 이름")메서드로 클래스를 동적으로 로드합니다. 우리가 모르는 클래스 정보를 사용할 경우에 Class 클래스를 활용합니다. Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 다음과 같습니다. Class.forName("클래스 이름") 메서드 사용하기 Object 클래스의 getClass() 메서드 사용하기 클래스 파일 이름을 Class 변수에 직접 대입하기 class MyClass { } public class ClassClassTest { public..

BACKEND/JAVA 2023.06.11

인터페이스 여러가지 요소와 인터페이스의 상속

인터페이스의 여러가지 요소. 추상 메서드 (Abstract Methods). 인터페이스는 하나 이상의 추상 메서드를 선언할 수 있습니다. 추상 메서드는 구현 내용이 없으며, 인터페이스를 구현하는 클래스에서 반드시 구현되어야 합니다. 예: void method1(); 상수 (Constants). 인터페이스는 상수를 선언할 수 있습니다. 상수는 public, static, final로 선언되어야 하며, 인터페이스를 구현하는 클래스에서 상수를 사용할 수 있습니다. 예: public static final int MAX_VALUE = 100; 디폴트 메서드 (Default Methods). Java 8부터 도입된 개념으로, 인터페이스에서 메서드의 기본 구현을 제공할 수 있습니다. 인터페이스를 구현하는 클래스에서..

BACKEND/JAVA 2023.06.09

인터페이스와 다형성(DAO) 활용하기

인터페이스(Interface). 인터페이스(Interface)는 객체 지향 프로그래밍에서 클래스나 다른 인터페이스와의 상호 작용을 정의하는 추상 형태의 구조입니다. 인터페이스는 메서드, 상수 또는 추상 메서드의 집합으로 구성됩니다. 클래스가 인터페이스를 구현하면, 해당 클래스는 인터페이스에서 정의된 메서드를 모두 구현해야 합니다. 인터페이스는 다음과 같은 특징을 가지고 있습니다: 추상화: 인터페이스는 실제 구현을 갖지 않는 추상적인 개념입니다. 인터페이스는 어떤 클래스가 가져야 하는 메서드와 상수의 목록을 정의하며, 해당 클래스는 인터페이스를 구현하여 이를 실제로 구현해야 합니다. 다중 상속: 클래스는 하나의 클래스만 상속받을 수 있지만, 인터페이스는 여러 개의 인터페이스를 구현할 수 있습니다. 이를 통..

BACKEND/JAVA 2023.06.09

상속과 추상 클래스, 템플릿 메서드 패턴

추상 클래스란? 추상 클래스 (Abstract Class)는 하나 이상의 추상 메서드를 포함하는 클래스입니다. 추상 메서드는 선언만 있고 구현이 없는 메서드를 의미합니다. 추상 클래스는 직접적으로 객체를 생성할 수 없으며, 상속을 통해 하위 클래스에서 구체적인 구현을 제공해야 합니다. - 추상 메서드를 통해 하위 클래스가 반드시 구현해야 할 동작을 정의합니다. - 추상 메서드는 상속받은 클래스에서 반드시 구현되어야 합니다. - 공통된 특성이나 동작을 가지는 클래스들의 공통 부분을 추상화하여 코드의 재사용성을 높입니다. - 추상 클래스는 abstract 키워드를 사용하여 선언합니다. - 추상 클래스 내에는 일반적인 멤버 변수, 메서드, 생성자 등이 포함될 수 있습니다. - 추상 클래스는 객체를 직접 생성할..

BACKEND/JAVA 2023.06.09

상속과 메서드 오버라이딩, 가상 메서드 원리

하위 클래스에서 상위 클래스 메서드 재정의 하기. 오버라이딩. 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않을 때 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있다. @overriding 애노테이션을 붙이면 재정의 된 메서드라는 의미로 선언부가 기존의 메서드와 다른 경우 에러가 난다. class Animal { public void sound() { System.out.println("동물이 소리를 낸다."); } } class Cat extends Animal { @Override public void sound() { System.out.println("야옹~"); } } class Dog extends Animal { @Override public voi..

BACKEND/JAVA 2023.06.08

상속과 상속에서 클래스 생성 과정과 형 변환.

상속이란. 객체 지향 프로그래밍의 중요한 특징 중 하나는 상속이다. 상속은 우리가 일반 적으로 알고있듯 물려받는다는 의미이다. 부모에게서 재산을 상속 받듯이 객체 지향 프로그래밍에서도 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현하는 것이다. 이미 구현된 클래스 보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속한다. 하위 클래스 -> 상위 클래스 방향으로 화살표를 그려줘야 한다. 부모 클래스 -> 자식 클래스 방향이 아니다! 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived clas..

BACKEND/JAVA 2023.06.08

클래스의 속성과 기능

자바에서 클래스는 객체를 정의하기 위한 일종의 템플릿. 클래스의 속성을 구현하는 멤버 변수. 속성은 클래스의 상태를 나타내는 데이터 입니다. 클래스의 객체마다 각각 다른 값을 가질 수 있습니다. 속성은 클래스 내에 선언되며, 데이터 타입과 변수명으로 구성됩니다. 속성은 프로퍼티 (property), 멤버 변수 (member variable), 필드 (field)라고 합니다. 클래스의 기능을 구현하는 메서드. 기능은 클래스가 수행할 수 있는 동작이나 작업을 나타냅니다. 메서드는 클래스 내에 정의되며, 객체의 특정 동작을 수행합니다. 메서드는 입력값을 받을 수 있고, 필요에 따라 결과값을 반환할 수도 있습니다. 아래는 클래스의 속성과 메서드를 구현한 예제입니다. public class Student { //..

BACKEND/JAVA 2023.06.05

객체지향 프로그래밍과 클래스

객체(Object) 의사나 행위가 미치는 대상 구체적, 추상적 데이터의 단위(학생, 회원, 생산, 주문, 배송) 객체 지향 프로그램과 절차 지향 프로그래밍 아침에 일어나 학교를 가는 과정을 예로 들어본다면 절차지향 프로그래밍 시간이나 사건의 흐름에 따른 프로그래밍 일어난다 → 씻는다 → 밥을 먹는다 → 버스를 탄다 → 요금을 지불한다 → 학교에 도착 물건을 고른다 → 장바구니에 넣는다 → 주문을 한다 → 금액을 지불한다 → 배송 시작 → 배송완료 객체 지향 프로그래밍 객체 지향 프로그래밍이란, 어떤 대상(객체)을 가지고 프로그래밍한다. 객체를 정의하고 객체간 협력을 프로그래밍 하는 것 클래스. 객체 지향 프로그래밍은 클래스를 기반으로 프로그래밍합니다. 클래스는 객체의 속성과 기능을 코드로 구현한 것으로 ..

BACKEND/JAVA 2023.06.05

자바 - 스트림(Stream)

스트림(Stream). 자료가 모여 있는 배열 또는 컬렉션, 일련의 연산이나 정렬, 숫자를 처리하는 기능 등이 미리 구현되어 사용할 수 있다면 간결하고 일관성있는 코드 작성이 가능합니다. 여러 자료의 처리에 대한 기능을 구현해 놓은 클래스가 바로 스트림 입니다. 스트림을 활용하면 배열, 컬렉션 등의 자료를 일관성 있게 처리할 수 있습니다. (입출력 스트림과는 다른 개념입니다.) 예로 1부터 5까지 정수를 담은 배열과 ArrayList의 요소를 하나씩 출력한다고 가정한다면 아래와 같이 작성할 수 있습니다. package june2023.day04; import java.util.ArrayList; import java.util.Arrays; import java.util.stream.IntStream; p..

BACKEND/JAVA 2023.06.04