java

    JAVA Basic) 인터페이스 활용

    목차 한 클래스가 여러 클래스를 상속받으면 메서드 호출이 모호해지는 문제가 발생할 수 있다. 하지만 인터페이스는 한 클래스가 여러 인터페이스를 구현할 수 있다. package interfaceex; public interface Buy { void buy(); } package interfaceex; public interface Sell { void sell(); } 그림을 보면 Customer클래스는 Buy와 Sell 두 인터페이스를 구현하고 있다. Buy인터페이스에 추상 메서드 buy()가 선언. Sell인터페이스에 추상메서드 sell()이 선언. package interfaceex; public class Customer implements Buy, Sell{ // Customer클래스는 Buy와..

    JAVA Basic) 인터페이스(interface)

    목차 구현 코드가 없는 인터페이스 인터페이스(interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적 선언하는 역할. 추상 메서드와 상수로만 이루어짐. 구현된 코드가 없어서 당연히 인스턴스를 생성할 수 없다. 이러한 인터페이스는 어떻게 사용되어지는지 간단한 계산기를 만들어보자. - calc 인터페이스 package interfaceex; public interface Calc { double PI = 3.14; int ERROR = -999999999; // 멤버변수는 public static final(상수)로 자동 선언됨 int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); ..

    JAVA Basic)상속과 다형성 - 문제 풀이

    목차 Q1 자바에서는 어떤 클래스의 기능을 확장하여 새로운 클래스를 만들기 위해 상속을 한다. 이때 사용하는 예약어는 [ ]이다. Q2 하위 클래스가 상위 클래스의 생성자를 호출하거나 상위 클래스의 멤버 변수, 메서드를 호출하기 위해 사용하는 예약어로 상위 클래스의 주소, 즉 참조 값을 나타내는 예약어는 [ ]이다. Q3 클래스를 상속받은 상태에서 상위 클래스에 이미 정의되어 있는 메서드를 하위 클래스에서 사용하기 위해 적절하지 않은 경우에 해당 메서드를 재정의할 수 있다. 이것을 [ ]라고 한다. Q4 다음 코드는 오류가 발생했다. 오류가 발생한 원인을 설명하라. package practice; public class Employee { public String name; public String gr..

    JAVA Basic) 다운 캐스팅과 instanceof

    목차 앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아봤다. 여기에서 다시 하위 클래스로 형 변환이 되는 과정을 알아보자. 위와 같은 계층 구조에서 상위 클래스 자료형으로 선언하는 코드가 가능하다. Animal = new Human(); // 상위 클래스 자료형으로 선언 이때 생성된 인스턴스 Human은 Animal형입니다. 이렇게 Animal형으로 형 변환이 이루어진 경우엔 Animal의 메서드와 멤버 변수만 사용이 가능하다. 따라서 필요에 따라 다시 원래 인스턴스의 자료형으로 되돌아가야 하는 경우가 필요하다. 이렇게 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 '다운 캐스팅(down casting)이라고 한다. instanceof 상속 관계를 생각..

    JAVA Basic) 다형성 활용하기

    목차 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 굉장히 편리하다. 여기에 배열까지 함께 사용하게 되면, 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있게 된다. 새로운 요구 사항이 발생했다..! [예제 시나리오] 고객이 늘어 VIP등급 보다 물건을 많이 구매하진 않지만, 그래도 혜택을 주는 등급(GOLD)을 추가하고 싶습니다. -제품을 살 때는 항상 10% 할인. -보너스 포인트 2% 적립 -담당 전문 상담원 X 새로운 고객 등급이 생겼다. 이 등급의 고객은 VIP고객과 보너스 포인트 적립률이 다르고, 담당 상담원이 없다. 이 내용을 기반으로 Customer클래스를 상속받아 'GoldCustomer클래스'를 만들어보자. 고객 관리 시스템은 다음과 같은 계층구조로 확장될..

    JAVA Basic) 다형성

    목차 묵시적 클래스 형 변환과, 가상메서드를 바탕으로 객체 지향의 중요한 특성인 '다형성(polymophism)'을 알아보자. '다형성'이란, 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다. 쉽게 말하면, 같은 코드에서 여러가지 실행 결과가 나오는 것이다. 3개의 클래스가 Animal클래스를 상속받은 상황이다. Animal클래스에서 메서드를 하나 정의하고 상속받은 클래스에서 재정의하는 코드를 구현해보자. package polymorphism; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move(){ System.out.println("사..

    JAVA Basic) 메서드 오버라이딩(method overriding)

    목차 지난 포스팅에서 새로운 등급을 만들면서 VIP 고객에게 제공하는 할인율과 세일 가격을 적용, 구현하지 않았다. 상위 클래스인 Customer에는 제품 가격을 계삲는 calcPrice()메서드가 이미 정의되어 있다. public int calcPrice(int price){ bonus += price * bonusRatio; return price; } 이 메서드는 정가를 그대로 지불하게 된다. 근데 VIP고객은 정가에서 10%할인을 받을 수 있도록 했다. 이 경우 상위 클래스의 calcPrice()메서드를 그대로 쓸 수 없을 것이다.(할인율이 다르기 때문) 이렇게 상위 클래스에서 정의한 메서드가 하위 클래스에서 구현할 내용과 다를 경우에 하위 클래스에서 이 메서드를 재정의 하는 것을 '메서드 오버라..

    JAVA Basic ) 상속과 다형성_상속, 형 변환

    목차 객체 지향 프로그래밍의 중요한 특징 중 하나가 '상속(inheritance)'이다. B클래스가 A클래스를 상속받으면 -> B클래스는 A클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체지향 프로그램은 유지 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 바로 이 '상속'이다. B클래스가 A클래스에서 상속을 받는다고 할 때 그림으로 다음처럼 나타낼 수 있다. 우리가 생각하기에 상속을 하는 클래스에서 상속을 받는 클래스로 화살표가 갈 것 같지만, 클래스 간 상속을 표현할 때는 다음 그림처럼 상속 받는 클래스에서 상속하는 클래스로 화살표가 가므로 햇갈리면 안된다. '상위 클래스'를 super class, base clase로, '하위 클래스'를 sub..

    JAVA Basic) 배열 응용 프로그램

    목차 ArrayList를 사용해 '학생 성적 출력 프로그램'을 구현해보자. 이 프로그램은 'Student클래스'와 'Subject클래스'를 사용한다. Subject클래스는 참조 자료형이므로 ArrayList를 활용해 구현해보자. student클래스 구현하기 어떤 학생이 수강하는 과목들의 성적을 출력하는 것이므로 '학생 객체'가 필요. package array; import java.util.ArrayList; public class Student { int studentID; String studentName; ArrayList subjectList; // Student클래스의 멤버 변수들 public Student(int studentID, String studentName) { this.student..

    JAVA Basic) ArrayList 클래스

    목차 앞서 배운 기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작한다. 따라서 나중에 요소가 추가되어야 하는데 정해놓은 길이를 넘어버린다거나, 또는 중간의 요소를 삭제해야 하면 (배열은 중간의 요소를 비울 수 없음.) 작성한 코드를 하나하나 수정해야 하는 불상사가 생겨버린다. 따라서 자바는 객체 배열을 좀 더 쉽게 사용할 수 있도록 '객체 배열 클래스 ArrayList'를 제공한다. ArrayList 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공. ArrayList 클래스에는 이미 만들어져 있는 메서드가 많이 있다. 그중 가장 많이 사용하는 메서드는... add()메서드를 이용하면 배열 길이와 상관 없이 객체를 추가할 수 있다. 만일 배열의 길이가 추가될 요소 개수보다 ..

    JAVA Basic) 다차원 배열

    목차 수학에서 평면을 나타내기 위해 x, y좌표를 쓰는 것 처럼 프로그램에서도 평면을 구현하기 위해 행, 열을 이용한 이차원 배열을 사용할 수 있다. 바둑, 체스 네비게이션 지도 등을 구현할 때 이차원 배열을 활용. 공간을 나타내는 프로그램을 구현할 때는 삼차원 배열을 활용. 이렇게 이차원 이상으로 구현한 배열을 '다차원 배열'이라고 한다. 2행 3열의 이차원 배열 선언 코드. int [][] arr = new int [2] [3]; // 자료형 배열명 행 / 열 개수 배열의 모든 요소를 참조하기 위해 각 행을 기준으로 열 값을 순회한다. 이 배열을 초기화 하려면 행과 열 개수에 맞추어 중괄호 {}안에 콤마(,)로 구분해 값을 적으면 된다. 다음 코드처럼 괄호 안에 적은 6개 값이 순서대로 arr배열의 ..

    JAVA Basic) 배열

    목차 자료를 순차적으로 관리하는 구조, 배열. 만약 수십개의 순차적인 변수를 관리해야 한다고 했을 때, 일일히 변수를 대입하기 힘들 것이다. 이때 사용하는 자료형이 배열(array)이다. 배열은 자료 구조의 가장 기초 내용이다. 배열을 사용하면 자료형이 같은 자료 여러 개를 한 번에 관리가 가능하다. 배열은 자료가 연속으로 나열된 자료 구조. 배열 선언 배열을 사용하려면 먼저 배열 선언을 해야함. 배열도 변수와 마찬가지로 자료형을 함께 선언한다. int[] array1 = new int[5]; //자료형[] 배열이름 = new 자료형[개수]; int array1 [] = new int[5]; //자료형 배열이름 [] = new 자료형[개수]; 배열을 이루는 각각의 자료를 배열 요소라고 한다. 이 배열 요..