자바

    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 클래스

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

    JAVA Basic) 다차원 배열

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

    JAVA Basic ) static변수

    목차 각 인스턴스 마다 따로 생성되는 변수가 아닌, 클래스 전반에서 공통으로 사용할 수 있는 '기준 변수'가 필요할 때가 있다. 예를 들어, 학생이 한 명 생성될 때마다 학번(기준 변수 값)을 하나씩 증가시켜 각 학생 인스턴스의 학번 변수에 대입해 주면 된다. 이때 클래스에서 공통으로 사용하는 변수를 'static 변수'로 선언한다. 1. 정의 static 변수란 다른 용어로 '정적 변수'라고도 한다. static int serialNum; (static 예약어) (자료형) (변수 이름) static변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 생성되는 변수가 아니다. static변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당된다. 그리고 그..

    JAVA_Basic ) 객체 간 협력

    목차 객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어진다. 그렇다면 실제로 객체의 협력이 어떻게 이루어지는지 보자. '학생'이 '버스'와 '지하철'을 이용하는 프로그램을 구현해보자. 학생 (이름, 학년, 가진 돈) ↓(버스를 탄다.) ↘(지하철을 탄다.) 버스 (버스 번호, 승객 수, 수입) / 지하철 (노선 번호, 승객 수, 수입) package cooperation; public class Student { public String studentName; //학생 이름 public int grade; // 학년 public int money; // 가진 돈 public Student(String studentName, int money) { // 학생 이름과 가진 돈을 매개변수로 받는 ..

    JAVA Basic ) this 예약어

    목차 요약 this예약어는 다음과 같이 활용된다. 1. 자신의 메모리를 카리키는 this. 2. 생성자에서 다른 생성자를 호출하는 this. 3. 자신의 주소를 반환하는 this. 1. 자신의 메모리를 카리키는 this. this는 간단히 설명하면 생성된 인스턴스 스스로를 가리키는 예약어. package thisEx; class BirthDay { int day; int montth; int year; public void setYear(int year) { this.year = year;// bDay.year = year;와 같음 } public void printThis() { System.out.println(this);// this 출력 메서드 (System.out.println(bDay)와 같다..