일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 변수
- 예외 처리
- MPA
- 개발자
- exception
- 코딩
- Java
- ArrayList
- 파이팅
- 인터페이스
- SSR
- node.js
- 자바
- 인스턴스
- 바이트 단위 스트림
- 문자 단위 스트림
- 새벽공부
- 코린이
- 다형성
- 졸리다
- 상속
- throws
- 보조 스트림
- try-catch
- 배열
- 자료형
- Today
- Total
목록코딩 (12)
SHUSTORY
인터페이스의 역할 메서드 선언부만 있는 인터페이스를 사용하는 이유는 무엇일까? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세의 역할을 한다. * 참고로 서버는 기능을 제공하는 쪽, 클라이언트는 기능을 사용하는 쪽을 의미한다. 예를 들어 인퍼에이스 A가 있고, 이를 구현한 B 클래스와 B 클래스를 사용하는 C 프로그램이 있다고 가정해보자. A에는 어떤 매개변수가 사용되며 어떤 자료형이 반환되는지와 함께 구현할 추상 메서드가 모두 선언되어 있다. 즉 C에서는 B의 구현 코드 전체를 살펴보지 않더라도 A만 보면 이 B 클래스를 어떻게 사용할지 알 수 있다. 이렇듯 프로그램에서 각 클래스를 사용할 때 클래스에서 구현한 내용을 몰라도 인터페이스에서 선언한 메서드의 매개변수 자료형과..
하위 클래스로 형 변환, 다운 캐스팅 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 다운 캐스팅이라고 한다. 상위 클래스인 Animal 클래스와 하위 클래스인 Human / Tiger / Eagle 클래스가 있다. 여기서 Animal ani = new Human( ); 코드에서 생성된 인스턴스 Human은 Animal형이다. 인스턴스 Human은 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다. 이럴 때 경우에 따라 다시 원래 인스턴스 자료형으로 되돌아가야 하는 경우가 있는데, 이럴 때 다운 캐스팅이 이루어진다. instanceof 다운캐스팅을 하기 전 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 변환할 때 오류를 방지할 수 있는데, ..
다형성 다형성이란 하나의 코드가 여러 자료형으로 구현되어 실현되는 것을 의미한다. 쉽게 말해 같은 코드에서 여러 실행 결과가 나오는 것이다. Animal 클래스를 상속받는 Human 클래스 / Tiger 클래스 / Eagle 클래스가 있고, Animal 클래스의 메서드를 하나 정의하고 상속받은 클래스에서 재정의해보자. AnimalTest 클래스를 통해 어떤 인스턴스가 매개변수로 넘어와도 모두 Animal 형으로 변환하도록 한다. 예를 들어 매개변수가 전달되는 부분에 Human 인스턴스가 전달되었다면 다음 코드와 같이 형 변환된다. 가상 메서드의 원리에 따라 animal.move( ) 메서드가 호출하는 메서드는 Animal의 move가 아닌 매개변수로 넘어온 실제 인스턴스의 메서드이다. animal.mov..
클래스의 상속 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..
참조 자료형 크기가 정해진 기본 자료형으로 선언하는 변수가 있고, 클래스 자료형으로 선언하는 참조 자료형 변수가 있다. 객체 지향 프로그래밍을 시작할 때는 일단 어떤 멤버 변수와 메서드를 제공하여 클래스를 만들지 생각한다. 예제01에서 String이 JDK에서 제공하는 참조 자료형이다. 학생이 수강하는 과목의 이름과 성적을 예제02와 같이 구현하면 학생에 대한 클래스임에도 과목에 대한 변수가 늘어나며 깔끔하지 않은 코드가 짜여진 것을 볼 수 있다. 이 경우 다음과 같이 학생과 과목 클래스를 분리하고, 학생 클래스가 과목 클래스를 멤버 변수를 가지도록 하면 된다. 참조 자료형은 프로그래머가 필요에 의해 만든 클래스를 사용할 수도 있고, JDK에서 제공하는 클래스를 사용할 수도 있다. 기본 자료형을 사용하듯..
생성자 예제02의 6행에서 Person( )과 같은 함수를 생성자라고 한다. 클래스의 멤버 변수는 메서드에 의해 값이 변경될 수도 있지만, 처음 클래스를 생성할 때 값을 정해야 하는 경우도 있다. 생성자가 하는 일은 클래스를 처음 만들 때 멤버 변수나 상수를 초기화하는 것이다. 디폴트 생성자 생성자는 클래스를 생성할 때만 호출한다. 생성자 이름은 클래스 이름과 같고, 생성자는 반환값이 없다. 그런데 Person 클래스를 살펴 보면 Person( ) 생성자가 따로 없는 것을 볼 수 있는데, 그럼에도 불구하고 new 예약어를 이용해 객체를 만들 수 있다. 생성자가 없는 클래스는 클래스 파일을 컴파일 할 때 자바 컴파일러에서 자동으로 생성자를 만들어 준다. 이를 디폴트 생성자라고 하며, 디폴트 생성자는 매개변..
클래스 속성을 구현하는 멤버 변수 클래스 내부에 객체가 가지는 속성을 변수로 선언한다. 이렇게 클래스 내부에 선언하여 객체 속성을 나타내는 변수가 멤버 변수이다. * 멤버 변수 = 속성 = 특성 멤버 변수의 속성에 맞추어 알맞은 자료형을 선언해야 한다. * 이후에 더욱 자세하게 정리할 예정이지만, 문자열을 표현하고자 할 경우 String 클래스를 사용한다. 멤버 변수의 자료형은 기본 자료형으로 선언할 수도 있고, 참조 자료형으로 선언할 수 있다. 멤버 변수의 자료형으로 사용되는 참조 자료형으로 사용하는 클래스로는 String, Date와 같이 JDK에서 제공하는 경우도 있지만, 개발자가 직접 만든 Student나 Person과 같은 클래스 또한 가능하다. 클래스 기능을 구현하는 메서드 클래스에서는 객체가..
항과 연산자 연산에 사용하는 기호를 연산자라고 하며, 연산에 사용하는 값을 항이라고 한다. 연산자의 우선순위로는 단항 연산자가 가장 높고 이항, 삼항 연산자 순서이다. 대입 연산자 변수에 값을 대입하는 연산자이다. 대입 연산자는 이항 연산자 중 우선순위가 가장 낮은 연산자이다. 하나의 문장에 여러 연산자가 있을 때 모든 연산을 다 끝낸 후 마지막에 연산 결과를 변수에 대입한다. 오른쪽 변수나 식의 값(숫자, 상수)이 대입되는 왼쪽에는 항상 변수나 상수가 와야 한다. 부호 연산자 특정 양수 값을 음수로 바꾸려면 다음과 같이 대입 연산자( = )를 사용하여 값을 대입해야 한다. 산술 연산자 프로그램에서 산술 연산자는 덧셈( + ) , 뺄셈( - ), 곱셈( * ), 나눗셈( / ), 나머지( % ) 다섯 가..
형 변환 정수와 실수는 컴퓨터 내부에서 표현되는방식이 전혀 다르다. 따라서 정수와 실수를 더한다고 할 때 그대로 연산을 수행할 수 없고 하나의 자료형으로 통일한 후 연산을 해야 한다. 이 경우 형 변환이 이루어진다. 형 변환에는 묵시적 형 변환(자동 형 변환)과 명시적 형 변환(강제 형 변환) 두 종류가 있다. * 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다. * 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다. 화살표 방향으로 묵시적 형 변환이 일어나며, 반대로 형 변환을 하려면 강제로 변환해야 한다. 화살표 방향으로 형 변환이 이루어질 때는 자료 손실이 없지만, 그 반대인 경우에는 자료 손실이 발생할 수도 있다. 묵시적 형 변환 바이트 크기가 작..