본문 바로가기

프로그래밍 언어/JAVA

(62)
JAVA 입문 - 다운 캐스팅과 instanceof 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 다형성 활용 하위 클래스로 형 변환, 다운 캐스팅 더보기 상속에서 클래스 생성과 형 변환글에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 배웠었다. 이제 다시 하위 클래스로 형 변환이 되는 과정을 살펴보자. 지난 번에 구현한 Animal 클래스와 Human 클래스를 생각해보자. Human 클래스는 Animal 클래스를 상속 받았기 때문에 Animal ani = new Human( ); 코드를 사용할 수 있다. 이때 생성된 인스턴으 Human은 Animal형이다. 이렇게 Animal형으로 형 변환이 이루어진 경우에 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다. Human 클래스에 더 많은 메서드가 구현되어 있고 ..
JAVA 입문 - 다형성 활용 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 다형성 앞서 배웠던 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 굉장히 편리하다고 한다. 이 때 배열을 함께 사용하면 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있다. 일반 고객과 VIP 고객의 중간 등급 만들기 더보기 시나리오: 고객이 늘어 VIP 고객만큼 물건을 많이 구매하지는 않지만 그래도 단골인 분들에게 혜택을 주고 싶다. 하여 GOLD 고객 등급을 하나 추가한다. GOLD 고객의 혜택은 아래와 같다. -제품을 살 때는 항상 10% 할인해준다. -보너스 포인트를 2% 적립해준다. -담당 전문 상담원은 없다. =====================================================..
JAVA 입문 - 다형성 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 메서드 오버라이딩 다형성 더보기 바로 전 글까지 공부한 묵시적 클래스 형 변환과 가상 메서드를 바탕으로 객체 지향의 중요한 특성인 다형성(polymorph ism)을 공부해보자. 다형성이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 의미한다. 쉽게 말하면 같은 코드에서 여러 실행 결과가 나오는 것이다. 이를 예를 통해 알아보자. 시나리오: Animal 클래스를 생성하고 Human 클래스와 Tiger 클래스, Eagle 클래스가 Animal 클래스를 상속받는 경우이다. Animal 클래스에서 메서드를 하나 정의하고 상속받은 클래스에서 재정의한다. 테스트 프로그램 구현 테스트를 위해 AnimalTest 클래스에 moveAnimal( ) ..
JAVA 입문 - 메서드 오버라이딩 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 상속에서 클래스 생성과 형 변환 상위 클래스 메서드 재정의하기 더보기 지난 글에서 만들었던 Customer 클래스에는 제품 가격을 계산하는 calcPrice( ) 메서드가 구현되었었다. 하지만 VIP 고객에게 제공하는 할인율과 세일 가격을 메서드로 구현하지는 않았었다. 그 문제를 해결하려 VIPCustomer에도 calcPrice( ) 메서드를 작성하려는데 상위 클래스의 calcPrice( ) 메서드와는 다른 내용이 수행되어야 한다. 이렇게 사우이 클래스에서 정의한 메서드가 하위 클래스에서 구현할 내용과 맞지 않을 경우에 하위 클래스에서 해당 메서드를 재정의할 수 있다. 이를 메서드 오버라이딩(method overriding)이라고 한다. 오버..
JAVA 입문 - 상속에서 클래스 생성과 형 변환 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 상속 하위 클래스가 생성될 때는 상위 클래스의 생성자가 먼저 호출된다. 상속 관계에서 클래스의 생성 과정을 보면 하위 클래스가 상위 클래스의 변수와 메서드를 사용할 수 있는 이유와 하위 클래스가 상위 클래스의 자료형으로 변환을 할 수 있는 이유를 이해 할 수 있다. 하위 클래스가 생성되는 과정 더보기 지난 글의 CustomerTest1 클래스를 살펴보면 VIPCustomer로 선언한 customerKim 인스턴스는 상속 받은 상위 클래스의 변수를 사용하였다. 변수를 사용할 수 있다는 것은 그 변수를 저장하고 있는 메모리가 존재한다는 것인데, VIPCustomer 클래스에는 해당 코드가 존재하지 않는다. Customer 클래스를 상속받았을 뿐이다..
JAVA 입문 - 상속 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 배열 응용 프로그램 객체 지향 프로그래밍의 중요한 특징 중 하나가 상속(inheritance)이라고 한다. 상속은 우리가 일반적으로 아는 '무언가를 물려받는 의미'이다. 예로 B 클래스가 A 클래스를 상속받으면 B 클래스는 A 클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체 지향 프로그램은 유지 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 가술이 바로 상속이라고 한다. 클래스의 상속 더보기 우선 상속과 관련하여 사용하는 용어와 문법에 대해 알아보자. B 클래스가 A 클래스에서 상속받는다고 할 때 다음처럼 나타낼 수 있다. 상속에 있어서 헷갈리면 안되는 것이 상속을 하는 클래스에서 상속을 받는..
JAVA 입문 - 배열 응용 프로그램 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - ArrayList 클래스 지난 글에서 배운 ArrayList를 사용해 학생 성적 출력 프로그램을 구현해보자. 이 프로그램은 Student 클래스와 Subject 클래스를 사용한다. 만약 어떤 학생이 10과목을 수강한다면 Subject 클래스형 자료형으로 선언한 변수가 10개 필요하다. 또 다른 학생은 4과목을, 어떤 학생은 7과목을 수강할 수도 있다. 따라서 이러한 경우에는 배열을 사용하여 프로그램을 구현하는 것이 좋다. Subject 클래스는 참조 자료형이므로 ArrayList를 활용해 구현한다. 시나리오: 1001학번 Choi와 1002학번 Kim, 두 학생이 있다. Choi 학생은 3과목을 수강한다. 국어 점수가 95점, 영어 점수가 70..
JAVA 입문 - ArrayList 클래스 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 다차원 배열 기존 배열의 단점 더보기 지난 시간에 공부했던 기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작해야한다. 또, 배열을 사용하는 중에는 배열 길이를 변경할 수 없고, 중간에 있는 요소를 비워둘 수 없어서 수정할 일이 생기면 배열을 하나하나 수정해야한다. ArrayList 클래스 더보기 그래서 JAVA는 객체 배열을 좀 더 쉽게 사용할 수 있게 객체 배열 클래스 ArrayList를 제공한다. ArrayList 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공한다. 오늘은 이 ArrayList의 간단한 사용법을 공부할 것이다. ArrayList 클래스의 주요 메서드 더보기 오늘 배울 ArrayList 클래스..