Iterator는 반복자라는 뜻을 갖는다. 컬렉션에 저장된 요소들을 순차적으로 읽어오는 역할을 하며, Collection 인터페이스 안에는 iterator 인터페이스의 iterator()메서드가 정의되어 있다. 즉 iterator()를 호출하면 Iterator 타입의 인스턴스가 반환된다. 따라서 List와 Set 인터페이스를 구현한 클래스들은 공통으로 iterator() 메서드를 사용할 수 있다. iterator()를 통해 만들어진 인스턴스는 아래의 메서드를 사용할 수 있다. next()메서드를 사용시 hasNext()를 통해 다음 객체가 있는지 확인하는 것이 좋다. 구체적인 사용 방법은 다음과 같다. List list = ...; Iterator iterator = list.iterator(); whi..
지난 글에 이어서 조금 더 긴 코드로 인터페이스의 장점에 대해 알아보자. 상황은 다음과 같다. 카페를 운영하는 사람이 있다. 단골은 매일 같은 음료만 먹는다 단골손님 A는 아이스 아메리카노를 먹는다. 단골손님 B는 딸기라떼를 먹는다. 위와 같은 내용을 코드로 옮겨보면 다음과 같을 것이다. class CafeCustomer { public String CafeCustomerName; public void setCafeCustomerName(String CafeCustomerName) { this.CafeCustomerName = CafeCustomerName; } } class CafeCustomerA extends CafeCustomer { } class CafeCustomerB extends CafeC..
final 키워드 영어로 '최종의', '마지막의'라는 뜻을 지니고 있는 final 키워드는 필드, 메서드, 클래스 앞에 위치할 수 있으며 각각 위치에 따라 의미가 조금씩 다르다. 조금씩 다른 의미를 지녔지만 공통적으로 변경이 불가능하고 확장할 수 없다는 특징을 가지고 있음을 알 수 있다. 이를 코드로 간략히 표현해보면 다음과 같다. final class FinalEx { // 확장/상속 불가능한 클래스 final int x = 1; // 변경되지 않는 상수 final void getNum() { // 오버라이딩 불가한 메서드 final int localVar = x; // 상수 return x; } } 정리하면 final 제어자가 앞에 붙으면 해당 대상은 더 이상 변경이나 확장이 불가능한 성질을 지니게 ..
추상화 추상화는 앞서 알아본 상속, 캡슐화, 다형성과 함께 객체지향 프로그래밍의 네 가지 기둥 중 하나이다. 자바에서의 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다. 이전에 살펴본 상속이 상위 클래스를 이용해 하위 클래스를 정의하는 것이라고 한다면, 추상화는 반대로 기존 클래스들의 공통점을 뽑아서 상위 클래스를 만들어내는 것이라고 할 수 있다. 위 그림은 추상화에 대해 잘 나타내고 있다. 자동차와 오토바이의 공통된 기능을 추출해 Vehicle이라는 클래스에 담았다고 생각하면 된다. 이런 식으로 공통적인 속성과 기능을 모아주면 코드의 중복을 줄일 수 있고, 클래스 간의 관계설정도 쉬워지며 유지/보수가 용이해진다. 자바에서의 추상화는 두 가지 문법요소를 이용해 구현되는데, 추상 클래..
이 예제는 어제 수업시간에 배운 것이다. 다형성이라는 객체 지향 프로그래밍의 개념이 어떻게 실제로 사용되는지를 쉽게 볼 수 있다. 먼저 손님이 카페에 방문하여 커피를 주문하는 상황을 가정하자. class Coffee { int price; public Coffee(int price) { this.price = price; } } class Americano extends Coffee {}; class CaffeLatte extends Coffee {}; class Customer { int money = 50000; } 하나의 멤버와 생성자를 가진 Coffee 클래스와 그 하위 클래스 Americano, CaffeLatte가 선언되어 있다. Customer 클래스는 손님을 나타내는데, 기본적으로 5만 원..
참조 변수의 타입 변환 기본 자료형과 마찬가지로 참조 변수도 형 변환이 가능하다. 참조 변수의 형 변환은 사용할 수 있는 멤버의 개수 조절을 의미하는데, 자바의 다형성을 이해하는 데 있어 필수적인 개념이라고 할 수 있다. 참조 변수의 타입 변환에는 다음의 세 가지 조건이 필요하다. 서로 상속 관계에 있는 상위 - 하위 클래스 사이에서만 가능하다. 하위 클래스에서 상위 클래스로의 형 변환(업 스케일링)은 형 변환자(괄호)를 생략할 수 있다. 상위 클래스에서 하위 클래스로의 형 변환(다운 스케일링)은 형 변환자(괄호)를 반드시 명시해야 한다. 예시를 통해 조금 더 살펴보자. public class VehicleTest { public static void main(String[] args) { Car car..
다형성(Polomorphism)이란 자바의 객체지향 프로그래밍의 네 가지 기둥 중 하나이자, 객체지향 프로그래밍에서 가장 중요하다고 할 수 있는 부분이다. 자바에서 다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 자바 프로그래밍에서 다형성이란 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것이며, 더 직관적으로 보자면 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용된 것이라 할 수 있다. 도대체 무슨 말인지 잘 감이 오지 않는데, 다음의 쉬운 예를 보자. //참조변수의 다형성 예시 class Friend { public void friendInfo() { System.out.println("나는 당신의 친구입니다."); } }..
- Total
- Today
- Yesterday
- 지지
- Backjoon
- 남미
- 백준
- spring
- 자바
- 기술면접
- 스트림
- 유럽
- 세모
- 세계여행
- a6000
- 맛집
- 알고리즘
- 동적계획법
- RX100M5
- Algorithm
- 세계일주
- 스프링
- 여행
- 칼이사
- Python
- 유럽여행
- BOJ
- 파이썬
- 중남미
- 야경
- java
- 리스트
- 면접 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |