일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 인터페이스
- FileInputStream
- try-catch
- 예외 처리
- node.js
- 문자 단위 스트림
- 백엔드
- 바이트 단위 스트림
- 파이팅
- ArrayList
- exception
- 코린이
- 메서드
- 개발자
- MPA
- 자료형
- 변수
- 초보개발자
- 자바
- 다형성
- 졸리다
- 배열
- 새벽공부
- SSR
- 보조 스트림
- 상속
- throws
- 코딩
- Java
- 인스턴스
- Today
- Total
목록프로그래밍 (58)
SHUSTORY
추상 클래스 추상 클래스를 영어로 표현하면 abstract class이고, 추상 클래스가 아닌 클래스는 concrete class라고 한다. 추상 클래스는 항상 구현 코드가 없는 추상 메서드를 포함한다. { }로 감싸진 함수의 구현부, 즉 함수 몸체가 없는 함수를 추상 메서드라고 한다. 추상 메서드는 abstract 예약어를 사용하며, { } 대신 ; 를 사용한다. 참고로 { } 를 사용하면 그것만으로도 메서드를 구현한 셈으로, 다음과 같은 메서드는 추상 메서드가 아니다. 자바에서 추상 메서드는 abstract 예약어를 사용하여 선언만 하는 메서드이다. 우리가 프로그램을 구현하고자 코딩을 하는 과정에서 로직을 만들고 기능을 구현할 때, 가장 중요한 것은 어떻게 구현할지를 결정하는 개발 설계 과정이다. 예..
하위 클래스로 형 변환, 다운 캐스팅 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 다운 캐스팅이라고 한다. 상위 클래스인 Animal 클래스와 하위 클래스인 Human / Tiger / Eagle 클래스가 있다. 여기서 Animal ani = new Human( ); 코드에서 생성된 인스턴스 Human은 Animal형이다. 인스턴스 Human은 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다. 이럴 때 경우에 따라 다시 원래 인스턴스 자료형으로 되돌아가야 하는 경우가 있는데, 이럴 때 다운 캐스팅이 이루어진다. instanceof 다운캐스팅을 하기 전 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 변환할 때 오류를 방지할 수 있는데, ..
다형성을 활용하면 프로그램을 유지보수하는 데 매우 편리하다. 이 때 배열을 함께 사용하면 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수 있다. 일반 고객과 VIP 고객의 중간 등급 만들기 [ GOLD 고객 ] 제품을 살 때는 항상 10% 할인해 준다. 보너스 포인트를 2% 적립해 준다. 담당 전문 상담원은 없다. 위 등급의 고객을 Customer 클래스를 상속받아 GoldCustomer 클래스를 만들어 구현해보자. Customer 클래스를 상속받았기 때문에 지불 가격과 보너스 포인트를 계산하는 calcPrice( ) 메서드만 재정의하여 새로운 기능을 쉽게 추가하여 구현할 수 있다. 배열로 고객 5명 구현하기 VIP고객 1명, GOLD고객 2명, SILVER고객 2명을 객체 배열 A..
다형성 다형성이란 하나의 코드가 여러 자료형으로 구현되어 실현되는 것을 의미한다. 쉽게 말해 같은 코드에서 여러 실행 결과가 나오는 것이다. Animal 클래스를 상속받는 Human 클래스 / Tiger 클래스 / Eagle 클래스가 있고, Animal 클래스의 메서드를 하나 정의하고 상속받은 클래스에서 재정의해보자. AnimalTest 클래스를 통해 어떤 인스턴스가 매개변수로 넘어와도 모두 Animal 형으로 변환하도록 한다. 예를 들어 매개변수가 전달되는 부분에 Human 인스턴스가 전달되었다면 다음 코드와 같이 형 변환된다. 가상 메서드의 원리에 따라 animal.move( ) 메서드가 호출하는 메서드는 Animal의 move가 아닌 매개변수로 넘어온 실제 인스턴스의 메서드이다. animal.mov..
상위 클래스 메서드 재정의하기 08-1 상속 예제에서 VIP 고객에게 제공하는 할인율과 세일 가격을 어떻게 적용할지 구현하지 않았다. 그에 대한 코드를 구현해보도록 하자. 상위 클래스 Customer에는 제품 가격을 계산하는 정가를 그대로 지불하는 calcPrice( ) 메서드가 정의되어 있다. VIP 고객은 정가에서 10% 할인받을 수 있도록 하려면 상위 클래스의 calcPrice( ) 메서드를 재정의해야 하는데, 이를 메서드 오바리이딩이라고 한다. 오버라이딩을 하려면 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이 반드시 같아야 한다. 만약 그렇지 않을 경우 자바 컴파일러는 재정의한 메서드를 기존 메서드와 다른 메서드로 인식한다. 하위 클래스 VIPCustomer에서 상위 클래스의 calcP..
하위 클래스가 생성되는 과정 하위 클래스가 생성될 때는 상위 클래스의 생성자가 먼저 호출된다. 상속을 받은 하위 클래스는 상위 클래스의 변수와 메서드를 사용할 수 있다. 변수를 사용할 수 있다는 것은 그 변수를 저장하고 있는 메모리가 존재한다는 의미이다. 그런데 VIPCustomer 클래스를 보면 해당 변수가 존재하지 않은 것을 볼 수 있다. 단지 Customer 클래스를 상속받았을 뿐인데 어떻게 변수를 사용할 수 있는 것인지에 대해 상속된 하위 클래스가 생성되는 과정을 통해 이해해보자. Customer( ) 디폴트 생성자와 VIPCustomer( ) 디폴트 생성자가 호출될 때 호출되었음을 출력하는 출력문을 작성하였다. CustomerTest2 클래스를 실행하여 출력 결과를 확인해보자. 예제01 출력 결..
클래스의 상속 B 클래스가 A 클래스를 상속받으면 B 클래스는 A 클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체 지향 프로그램은 유지보수 및 프로그램 수정과 내용 추가가 유연한데, 이 기반이 되는 기술이 '상속'이다. B 클래스가 A 클래스에게 상속받을 때, 화살표로 표시할 때는 B→A로 표현한다. ( * 화살표 방향 주의 ) 여기서 A 클래스를 부모 클래스, 상위 클래스라고 부르며 B 클래스를 자식 클래스, 하위 클래스라고 부른다. 위 상속 문법은 B 클래스가 A클래스를 상속받는 코드이다. 상속 관계에서 상위 클래스가 하위 클래스보다 일반적인 개념이고, 하위 클래스가 구체적인 클래스가 된다. 상속을 사용하여 고객 관리 프로그램 구현하기 회사에서 고객 정보에 맞춤 서비스를 제공하기 위한 고객 관리..
기존 배열의 단점과 ArrayList 기존 배열은 항상 배열 길이를 정하고 시작했다. 그런데 배열을 사용하는 도중에 배열 길이 변경이 불가하며 배열은 중간에 있는 요소를 비워 둘 수 없으므로 배열을 수정하기 복잡하다는 불편함이 있다. 자바는 객체 배열을 더욱 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공한다. ArrayList는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공한다. ArrayList 클래스의 주요 메서드 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미한다. int size( ) 배열에 추가된 요소 전체 개수를 반환한다. E get(int index) 배열의 index 위치에 있는 요소를 반환한다. E remov..
다차원 배열 07-1 배열에서 설명한 배열은 '일차원 배열'이다. 이차원 이상으로 구현한 배열을 '다차원 배열'이라고 하며, 평면이나 공간 개념을 구현하는 데 사용한다. 예를 들어 바둑이나 체스 게임, 네비게이션 지도 등을 구현할 때 이차원 배열을 사용한다. 삼차원 배열은 주로 공간을 나타내는 프로그램에서 활용한다. 이차원 배열 arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] 위와 같이 2행 3열의 이차원 배열을 선언할 수 있으며 위 표는 선언한 배열의 논리 구조이다. 1 2 3 4 5 6 배열의 모든 요소를 참조하려면 각 행을 기준으로 열 값을 순회하면 된다. 이차원 배열을 초기화하려면 행과 열 개수에 맞추어서 { } 내부에 콤마로 값을 구분해..
자료를 순차적으로 관리하는 구조, 배열 배열을 사용하면 자료형이 같은 자료 여러 개를 한 번에 관리할 수 있다. 배열 선언 배열을 사용하려면 이전에 배웠던 변수와 마찬가지로 먼저 선언해야 한다. 배열을 이루는 각각의 자료를 배열 요소라고 한다. 배열 요소는 자료형이 모두 같다. 먼저 저장하려는 자료의 성격에 맞게 자료형을 정하고 선언하려는 배열 요소 개수만큼 [ ] 안에 적는다. 위 예제를 통해 살펴보자면 int형 요소가 10개인 배열을 선언한 것으로 배열 길이는 10개, 배열 전체 바이트는 40바이트이다. 배열 초기화 자바에서 배열을 선언하면 그와 동시에 각 요소의 값이 초기화된다. 배열의 자료형에 따라 정수는 0, 실수는 0.0, 객체 배열은 null로 초기화되며, 배열 선언과 동시에 특정 값으로 초..