
일반 클래스, 람다식, 익명 클래스 예시개발/java2024. 7. 12. 17:59
Table of Contents
똑같은 일을 세 가지 형태로 다룬 예시들을 보며 완벽 이해하자!
함수형 인터페이스 정의
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
일반 클래스를 사용한 구현
// 덧셈 연산을 위한 클래스
class AdditionOperation implements MathOperation {
@Override
public int operate(int a, int b) {
return a + b;
}
}
// 뺄셈 연산을 위한 클래스
class SubtractionOperation implements MathOperation {
@Override
public int operate(int a, int b) {
return a - b;
}
}
// 곱셈 연산을 위한 클래스
class MultiplicationOperation implements MathOperation {
@Override
public int operate(int a, int b) {
return a * b;
}
}
public class MainClass {
public static void main(String[] args) {
// 각 연산 클래스를 인스턴스화하여 사용
MathOperation addition = new AdditionOperation();
MathOperation subtraction = new SubtractionOperation();
MathOperation multiplication = new MultiplicationOperation();
System.out.println("Addition: " + addition.operate(5, 3)); // 8
System.out.println("Subtraction: " + subtraction.operate(5, 3)); // 2
System.out.println("Multiplication: " + multiplication.operate(5, 3)); // 15
}
}
람다식을 사용한 구현
public class MainLambda {
public static void main(String[] args) {
// 덧셈 연산
MathOperation addition = (a, b) -> a + b;
// 뺄셈 연산
MathOperation subtraction = (a, b) -> a - b;
// 곱셈 연산
MathOperation multiplication = (a, b) -> a * b;
System.out.println("Addition: " + addition.operate(5, 3)); // 8
System.out.println("Subtraction: " + subtraction.operate(5, 3)); // 2
System.out.println("Multiplication: " + multiplication.operate(5, 3)); // 15
}
}
메서드 참조를 사용한 구현
class MathOperations {
public static int add(int a, int b) {
return a + b;
}
public static int subtract(int a, int b) {
return a - b;
}
public static int multiply(int a, int b) {
return a * b;
}
}
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
public class MainMethodReference {
public static void main(String[] args) {
// 덧셈 연산
MathOperation addition = MathOperations::add;
// 뺄셈 연산
MathOperation subtraction = MathOperations::subtract;
// 곱셈 연산
MathOperation multiplication = MathOperations::multiply;
System.out.println("Addition: " + addition.operate(5, 3)); // 8
System.out.println("Subtraction: " + subtraction.operate(5, 3)); // 2
System.out.println("Multiplication: " + multiplication.operate(5, 3)); // 15
}
}
익명 클래스를 사용한 구현
public class MainAnonymous {
public static void main(String[] args) {
// 덧셈 연산
MathOperation addition = new MathOperation() {
@Override
public int operate(int a, int b) {
return a + b;
}
};
// 뺄셈 연산
MathOperation subtraction = new MathOperation() {
@Override
public int operate(int a, int b) {
return a - b;
}
};
// 곱셈 연산
MathOperation multiplication = new MathOperation() {
@Override
public int operate(int a, int b) {
return a * b;
}
};
System.out.println("Addition: " + addition.operate(5, 3)); // 8
System.out.println("Subtraction: " + subtraction.operate(5, 3)); // 2
System.out.println("Multiplication: " + multiplication.operate(5, 3)); // 15
}
}
'개발 > java' 카테고리의 다른 글
TCP 채팅 프로그램-java (0) | 2024.07.22 |
---|---|
자바에서 자주 사용되는 자료구조와 자료형 간단 정리 (0) | 2024.07.15 |
Java의 람다 표현식 과 스트림 (0) | 2024.07.12 |
Java의 익명 클래스 (0) | 2024.07.12 |
객체지향 프로그래밍의 4가지 요소(3) 다형성 (0) | 2024.07.12 |

@바이솔 :: Byesol의 기록