Programming/Java 기초

JAVA Basic) 내부 클래스 - 연습문제

728x90

목차

 


 

Q1.

지역 내부 클래스에서 외부 클래스 메서드의 지역 변수를 사용할 수 있지만, 그 값을 변경하면 오류가 발생한다.
이때 사용하는 지역 변수는 [  ]변수가 되기 때문이다.

 

Q2.

내부 클래스 중 클래스 이름 없이 인터페이스나 추상 클래스 자료형에 직접 대입하여 생성하는 클래스를 [  ]라고 한다.

 

Q3.

자바에서 제공하는 함수형 프로그래밍 방식으로 인터페이스의 메서드를 직접 구현하는 코드를 [  ]이라고 한다.

 

Q4.

람다식으로 구현할 수 있는 인터페이스는 메서드를 하나만 가져야 한다. 이러한 인터페이스를 [  ]라고 한다.

 

Q5.

다음과 같이 두 정수를 매개변수로 하는 메서드가 인터페이스에 정의되어 있다. 두 정수의 합을 반환하는 람다식을 구현하고 호출해보자.

package lambda;

public interface Calc {
	public int add(int num1, int num2);
}

 

Q6.

자바에서 자료를 추상화하여 여러 자료형의 자료를 동일하게 처리할 수 있도록 제공하는 클래스를 [  ]이라고 한다.

 

Q7.

다음과 같이 도서관에 책이 있다.

class Book {
	private String name;
	private int price;
	
	public Book(String name, int price) {
		this.name = name;
		this.price = price;
	}
}

public class LibraryTest {
	public static void main(String[] args) {
		List<Book> bookList = new ArrayList<>();
		
		bookList.add(new Book("자바", 25000));
		bookList.add(new Book("파이썬", 15000));
		bookList.add(new Book("안드로이드", 30000));
	}
}

위와 같을 때 스트림을 활용해 다음처럼 책 목록을 출력하세요.

- 모든 책의 가격의 합
- 책의 가격이 20,000원 이상인 책의 이름을 정렬하여 출력

 

 

 

 

 

 

 

 

 

정답:

Q1: final

Q2: 익명 내부 클래스

Q3: 람다식

Q4: 함수형 인터페이스

Q5:

public class Q5 {
	public static void main(String[] args) {
		Calc sum = (s, v) -> s + v;
		System.out.println(sum.add(30, 20));
	}
}

 

Q6: 스트림

Q7:

import java.util.ArrayList;
import java.util.List;

class Book {
	private String name;
	private int price;
	
	public Book(String name, int price) {
		this.name = name;
		this.price = price;
	}
    
	//getter 추가
	public String getName() {
		return name;
	}
	public int getPrice() {
		return price;
	}
}

public class LibraryTest {
	public static void main(String[] args) {
		List<Book> bookList = new ArrayList<>();
		
		bookList.add(new Book("자바", 25000));
		bookList.add(new Book("파이썬", 15000));
		bookList.add(new Book("안드로이드", 30000));
		
		System.out.println("==모든 책 가격의 합==");
		int total = bookList.stream().mapToInt(p -> p.getPrice()).sum();
		System.out.println(total);
		
		System.out.println("==20,000원이 넘는 책 이름 정렬==");
		bookList.stream().filter(p1 -> p1.getPrice()>=20000).map(p1 -> p1.getName()).sorted().forEach(b1 -> System.out.println(b1));
	}
}

300x250