2023/04

· DEV/Java
Interface의 활용 - 🐥 카카오 테크 캠퍼스 Interface의 정의와 사용 자바에서 인터페이스란 추상 메서드와 상수 필드만을 가지는 클래스와 유사한 형태의 추상 타입이다. 인터페이스를 사용하면 클래스간의 의존성을 낮출 수 있으며, 다형성을 구현할 수 있다. 인터페이스는 다른 클래스에서 해당 메서드를 구현함으로써 인터페이스를 사용하는 클래스에서 해당 메서드를 호출할 수 있도록 한다. Strategy 패턴의 정의와 사용 Strategy 패턴은 객체의 행위를 클래스에서 구현하는 것이 아니라, 행위를 구현한 전략을 가진 객체를 전달받아 실행하는 패턴이다. Strategy 패턴을 사용하면 실행시간에 알고리즘을 선택할 수 있으며, 기존 코드의 변경 없이 새로운 알고리즘을 추가할 수 있다. Strategy ..
· DEV/Java
Interface 인터페이스는 메소드의 틀만 정의하고, 구현체는 없는 상태에서 받아들인다. interface 인터페이스 이름 { public static final float pi = 3.14F; public void makeSomething(); } 모든 변수는 상수로 선언된다 - public static final 모든 메서드가 추상 메서드로 선언된다 - public abstract 인터페이스의 핵심 원리 인터페이스는 클래스와 같은 타입이다. 클래스와 다르게 인터페이스는 상속이 아닌 구현을 통해 사용된다. 인터페이스는 구현부가 없는 추상 메소드를 가지고 있어, 클래스가 인터페이스를 구현하면 해당 추상 메소드를 반드시 구현해야 한다. 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다. 타입 상속을..
· DEV/Java
타입 상속 자바에서 타입 상속(Type Inheritance)이란, 클래스와 인터페이스 간의 관계를 나타내는 것으로, 부모 클래스나 인터페이스의 멤버들을 자식 클래스나 인터페이스에서 사용할 수 있도록 하는 것을 말합니다. 타입 상속을 통해 자식 클래스나 인터페이스는 부모 클래스나 인터페이스의 멤버들을 물려받아 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있고, 클래스나 인터페이스 간의 계층 구조를 표현할 수 있습니다. 자바의 타입 상속 원리 자바에서 타입 상속은 extends 키워드를 사용해 부모 클래스를 지정하거나, implements 키워드를 사용해 인터페이스를 구현하여 구현됩니다. 자식 클래스나 인터페이스는 부모 클래스나 인터페이스를 상속받음으로써, 부모 클래스나 인터페이스의 멤버들을..
· DEV/Java
추상클래스(Abstract Class) 추상 클래스란 인스턴스화 할 수 없는 클래스로, 하나 이상의 추상 메소드(abstract method)를 포함하는 클래스입니다. 추상 메소드는 선언만 있고 구현이 없는 메소드입니다. 추상 클래스는 하위 클래스에서 공통된 기능을 상속하면서, 하위 클래스가 구현해야 할 기능을 강제하는 역할을 합니다. 특징 추상 클래스는 인스턴스를 생성할 수 없습니다. 따라서, 추상 클래스를 상속받은 자식 클래스의 인스턴스를 통해 사용할 수 있습니다. 추상 클래스는 추상 메소드와 일반 메소드를 모두 포함할 수 있습니다. 추상 클래스를 상속받은 자식 클래스는 추상 클래스에 선언된 추상 메소드를 모두 구현해야 합니다. Example. 코드로 알아보자 abstract class Animal ..
· DEV/Java
프레임워크와 라이브러리의 차이 프레임워크와 라이브러리의 차이 프레임워크는 개발자가 작성하는 애플리케이션의 구조를 정의하고, 필요한 기능을 제공한다. 라이브러리는 개발자가 작성하는 애플리케이션에서 필요한 기능을 제공하는데 중점을 둔다. 프레임워크의 정의 프레임워크는 소프트웨어의 구조를 정의하고, 애플리케이션 개발에 필요한 여러 기능을 제공하는 소프트웨어 구조이다. 개발자는 프레임워크 안에서 코드를 작성하고, 프레임워크가 제공하는 라이브러리 및 기능을 사용하여 애플리케이션을 개발한다. 대표적인 예시로는 Spring Framework가 있다. 라이브러리의 정의 라이브러리는 개발자가 원하는 기능을 재사용할 수 있게끔 제작된 소프트웨어의 집합이다. 라이브러리를 사용하는 개발자는 필요한 기능을 불러와서 사용하며, ..
· DEV/Java
Template 메서드 패턴 템플릿 메서드 패턴은 알고리즘의 구조를 정의하는 추상 클래스와 실제 구현을 수행하는 하위 클래스로 구성된 디자인 패턴입니다. 추상 클래스에서는 알고리즘의 골격을 정의하며, 하위 클래스에서는 그 골격에 따라 실제 구현을 제공합니다. 이렇게 하여 알고리즘의 구조를 변경하지 않고 일부 구현을 변경할 수 있습니다. 예제 코드 abstract class Beverage { // 템플릿 메소드 final void prepareRecipe() { boilWater(); brew(); pourInCup(); addCondiments(); } abstract void brew(); // 추상 메소드 abstract void addCondiments(); // 추상 메소드 void boilWa..
· DEV/Java
다운 캐스팅(DownCasting) 다운 캐스팅(Downcasting)은 슈퍼클래스(부모 클래스) 타입의 참조를 서브클래스(자식 클래스) 타입으로 변환하는 과정을 의미합니다. 다운 캐스팅의 사용 목적은 다음과 같습니다. 다형성의 활용 다형성을 통해 슈퍼클래스 타입의 참조 변수로 서브클래스의 인스턴스를 참조할 수 있습니다. 이때, 슈퍼클래스에 없는 서브클래스의 메서드나 필드를 사용하고자 할 때 다운 캐스팅을 사용하여 서브클래스 타입으로 변환한 뒤 접근할 수 있습니다. 메모리 사용 최적화 슈퍼클래스 타입의 참조 변수로 여러 서브클래스의 인스턴스를 참조할 수 있으므로, 메모리 사용을 줄이고 코드의 유지 보수성을 높일 수 있습니다. Java에서 다운 캐스팅의 예시 class Animal { public void..
· DEV/Java
가상 함수 - 🐥 카카오 테크 캠퍼스 정의 가상 함수(Virtual Function)는 객체 지향 프로그래밍에서 상위 클래스의 메서드를 하위 클래스에서 Overriding(재정의)할 수 있는 메서드입니다. 다형성(Polymorphism)을 지원하기 위해 사용되며, 가상 함수를 사용하면 상위 클래스 타입의 참조 변수로 하위 클래스의 메서드를 호출할 수 있습니다. 가상 함수의 핵심은 동적 바인딩입니다. 동적 바인딩은 프로그램 실행 중에 실제 호출할 함수를 결정하는 프로세스를 말합니다. 핵심 다형성을 지원한다. 상위 클래스의 메서드를 하위 클래스에서 재정의할 수 있다. 상위 클래스 타입의 참조 변수로 하위 클래스의 메서드를 호출할 수 있다 abstract class Animal { abstract void m..
· DEV/Java
Is-A와 HAS-A 또는 Inheritance와 Composition 상속(Inheritance), Is-A 관계 상속은 한 클래스가 다른 클래스의 속성과 메소드를 물려받는 것입니다. 상속을 사용하면 코드의 재사용성을 높일 수 있습니다. 자식 클래스는 부모 클래스의 속성과 메소드를 물려받고, 필요한 경우 추가적인 속성과 메소드를 정의할 수 있습니다. Is-A 관계는 한 객체가 다른 객체의 특수한 형태로 볼 수 있는 관계를 의미합니다. Composition (구성, Has-A 관계) Composition은 한 클래스가 다른 클래스의 객체를 포함하는 방식으로 클래스 간의 관계를 나타냅니다. 이 관계를 Has-A 관계라고도 합니다. Composition을 사용하면 클래스 간의 결합도를 낮추고, 유지 보수성을..
· DEV/Java
다형성(Polymorphism) 다형성은 여러 가지 형태를 가질 수 있는 능력을 말합니다. 프로그래밍에서 다형성은 한 인터페이스나 클래스를 사용하여 여러 개의 다른 타입의 객체를 참조하거나 처리할 수 있는 능력을 의미합니다. 다형성을 사용해야 하는 이유는 다음과 같습니다: 코드의 재사용: 다형성을 사용하면 기존 클래스를 수정하지 않고 새로운 클래스를 추가하여 코드를 재사용할 수 있습니다. 유연성: 다형성을 사용하면 한 코드 블록에서 여러 타입의 객체를 처리할 수 있습니다 확장성: 다형성을 사용하면 새로운 타입의 객체를 추가할 때 기존 코드를 수정하지 않고도 프로그램을 확장할 수 있습니다. Example. Customer class Customer { protected int id; protected St..
berom
'2023/04 글 목록