spring_sunshine
Coding Blog
spring_sunshine
전체 방문자
오늘
어제
  • 분류 전체보기 (144)
    • 개발일지 (2)
    • Java (12)
      • 개념 (12)
      • 코테 (0)
    • Spring (5)
      • 개념 (5)
      • 프로젝트 (0)
    • CS (19)
      • 네트워크 (9)
      • 스터디 (6)
      • 정처기 (3)
    • SQLD (3)
    • React (27)
      • [책] 리액트를 다루는 기술 (13)
      • [강의] 만들면서 배우는 리액트 (2)
      • 개념 (11)
    • React Native (10)
      • [책] 리액트 네이티브 앱프로그래밍 (4)
      • [강의] 처음 배우는 리액트 네이티브 (4)
      • 프로젝트 (1)
    • Python (37)
      • [책] 이코테 (9)
      • [강의] 파이썬 알고리즘 문풀 (6)
      • [강의] 파이썬입문과 크롤링기초 (6)
      • 개념 (7)
      • 백준 (9)
    • Flutter (4)
      • Dart (4)
    • ML (14)
      • [책] 혼공머신 (6)
      • [강의] 딥러닝 CNN (4)
      • NumPy (4)
    • JavaScript (3)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
spring_sunshine

Coding Blog

Java/개념

익명 클래스

2023. 10. 29. 09:08

함수형 인터페이스

  • 추상 메소드가 단 하나만 선언된 인터페이스 (다른 존재 여부는 상관 x)
  • 추상 메소드는 인터페이스와 추상 클래스에서 사용이 되고, 선언만 되어있는 메소드로 자식 클래스에서 반드시 구현이 되어야 한다.
@FunctionalInterface // 함수형 인터페이스 o
interface MyRunnable {
	void run(); 
}

@FunctionalInterface // 함수형 인터페이스 o
interface MyRunnable2 {
	void run(); 
    default void sayHello() {
    	System.out.println("Hello");
    }
}

// 함수형 인터페이스 x
interface MyRunnable3 {
	void run1();
    void run2();
}

 

인터페이스의 구현

  • 반드시 인터페이스의 구현체를 만들어주고, 구현체의 인스턴스를 생성해서 이용해야 한다.
  • 해당 구현체를 단 한번만 이용하는 경우에는 MyRunnable과 같은 임시 클래스를 작성해야 하기 때문에 불필요하게 느껴진다.
    → 익명 클래스의 등장
class MyRunnableImpl implements MyRunnable {
	@Override
    public void run() {
    	System.out.println("Let's run");
    }
}

public class Main {
	public static void main(String[] args) {
    	MyRunnableImpl object1 = new MyRunnableImpl();
        object1.run();
    }
}

 

익명 클래스

  • 익명 클래스는 인스턴스를 단 한번만 사용하기 위해서 선언되고, 재사용할 수 없다.
  • 별도의 이름이 없고, 인터페이스의 추상 메소드를 구현한 익명 클래스를 인터페이스의 인스턴스로 사용할 수 있다.
public class Main {
	public static void main(String[] args) {
    	MyRunnable object2 = new MyRunnable() {
        	@Override
            public void run() {
                System.out.println("Let's run");
            }
        }
        object2.run();
    }
}

→ 그리고 이 익명 클래스를 더 간결하게 작성하는 람다 표현식의 등장

'Java > 개념' 카테고리의 다른 글

정규표현식  (1) 2023.11.02
람다식  (0) 2023.10.29
equals, hashCode  (0) 2023.10.27
String / int 변환  (0) 2023.10.23
Collections.sort / Arrays.sort  (0) 2023.10.02
    'Java/개념' 카테고리의 다른 글
    • 정규표현식
    • 람다식
    • equals, hashCode
    • String / int 변환
    spring_sunshine
    spring_sunshine

    티스토리툴바