목록Java (47)
각진 세상에 둥근 춤을 추자
다형성(polymorphism)은 프로그래밍 언어에서 하나의 식별자로 여러 개의 작업을 처리하는 것을 의미한다. 앞서 배운 ‘메소드 오버로딩', ‘메소드 오버라이딩'을 포함해 ‘제네릭 프로그래밍'도 다형성이라 할 수 있다. 예를 들어 그림과 같이 3개의 클래스가 Animal 클래스를 상속받고 있는 경우가 있다. Animal 클래스에서 메서드를 하나 정의하고 상속 받은 클래스에서 재정의하는 프로그램을 작성해 본다. package ch08_4; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal{ public void move() { System.out.println("사람이 두 발..
하위 클래스인 VIPCustomer에서 super 예약어를 이용해 상위 클래스 Customer 클래스를 호출한다. 자식 클래스는 부모 클래스의 메소드를 상속받아서 사용할 수 있다. 하지만 상속은 받았더라도, 목적에 맞지 않아 변경하는 경우가 있다. 이때 메소드 오버라이딩(method overriding)은 자식 클래스가 부모 클래스의 메소드를 자신의 필요에 맞추어 재정의한다. (단, 메소드의 이름이나 매개 변수, 반환형은 동일해야 한다.) (1) 상위 클래스 - Customer package ch08_3; public class Customer { // 멤버 변수 protected int customerID;// 고객 아이디 protected String customerName;// 고객 이름 prote..
상속(Inheritance)이란, 기존에 존재하는 클래스로부터 필드와 메소드를 이어받고, 필요한 기능을 추가할 수 있는 기법이다. 즉, 상속을 이용하여 검증된 소프트웨어를 재사용할 수 있어 신뢰성 있는 소프트웨어를 손쉽게 개발, 유지 및 보수할 수 있다. ” extends ” 자바에서는 ‘extends’ 키워드를 이용하여 상속을 나타낸다. 상속하는 클래스를 부모 클래스(슈퍼 클래스)라고 하고, 상속받는 클래스를 자식 클래스(서브 클래스)라고 한다. 예를 들어 B클래스가 A클래스에서 상속받는다고 하면 다음과 같이 나타낼 수 있다. class B extends A { } 회사에서 고객 정보를 가지고 맞춤 서비스를 제공하는 고객 관리 프로그램을 구현해 본다. 고객 클래스를 구현하기 위해 클래스 속성을 멤버 변..
Student 클래스와 Subject 클래스 그리고 ArrayList를 사용해 학생 성적 출력 프로그램을 구현해 본다. (1) Student 클래스 구현하기 package ch07_4; import java.util.ArrayList; public class Student { int studentID; String studentName; // ArrayList 선언하기 ArrayList subjectList; public Student(int studentID, String studentName) { this.studentID = studentID; this.studentName = studentName; // ArrayList 생성하기 subjectList = new ArrayList(); } // 학..
배열을 통해 100명의 학생을 위한 프로그램을 개발했다고 가정한다. 학생 수가 어느 순간 100명이 넘었다. 배열을 사용하는 중에는 배열의 길이를 변경 할 수 없기 때문에 다시 코드를 수정해야 하는 일이 생긴다. 객체 배열 클래스 ArrayList를 통해 객체 배열을 좀 더 쉽게 사용할 수 있다. 메서드 설명 boolean add(자료형 e) 요소 하나를 배열에 추가한다. int size( ) 배열에 추가된 요소 전체 개수를 반환한다. 자료형 get(int index) 배열의 index 위치에 있는 요소 값을 반환한다. 자료형 remove(int index) 배열의 Index 위치에 있는 요소 값을 제거하고 그 값을 반환한다. boolean isEmpty( ) 배열이 비어 있는지 확인한다. ArrayLi..
행 하나로만 이루어진 배열은 '1차원 배열'이다. 프로그램에서는 바둑이나 체스 게임, 네비게이션 지도 등을 구현하는 등 평면을 구하기 위해 2차원 배열을 사용하거나, 공간 개념을 구현하기 위해 3차원 배열을 사용하기도 한다. (1) 2차원 배열 다음은 2행 3열의 2차원 배열을 선언하는 코드와 논리 구조이다. arr [0][0] arr [0][1] arr [0][2] arr [1][0] arr [1][1] arr [1][2] 2차원 배열을 초기화하려면 다음과 같이 행과 열 개수에 맞추어 {중괄호} 안에 콤아(,)로 구분해 값을 적는다. 이 내용을 코드로 구현해 본다. package ch7_2; public class TwoDimension { public static void main(String[] a..
향상된 for문 (enhanced for loop)은 배열의 처음에서 끝까지 모든 요소를 참조할 때 사용하면 편리한 반복문이다. 향상된 for문은 배열 요소 값을 순서대로 하나씩 가져 와서 변수에 대입한다. 기존의 for문과 달리 따로 초기화와 종료 조건이 없기 때문에 모든 배열의 시작 요소부터 끝 요소까지 실행한다. for (변수 : 배열){ 반복 실행문; } package ch07_1; public class EnhancedForLoop { public static void main(String[] args) { String [] strArray = {"Hello", "This", "is", "Java"}; for (String lang : strArray) { System.out.println(la..
배열을 복사하는 방법은 두 가지가 있다. 1. 기존 배열과 배열 길이가 같거나 더 긴 배열을 만들고 for문을 사용하여 각 요소 값을 반복하여 복사하기 2. System.arraycopy( ) 메소드 사용하기 System.arraycopy (src, srcPos, dest, destPos, length) 매개변수 설명 src 복사할 때 배열 이름 srcPos 복사할 배열의 첫 번째 위치 dest 복사해서 붙여 넣을 대상 배열 이름 destPos 복사해서 대상 배열에 붙여 넣기를 시작할 첫 번째 위치 length src에서 dest로 자료를 복사할 요소 개수 System.arraycopy() 메소드를 사용해 배열을 복사해 본다. package ch07_1; public class ArrayCopy { pu..
동일한 기본 자료형 (int, double ...) 변수 여러 개를 배열로 사용할 수 있듯이 참조 자료형 변수도 여러 개로 배열을 사용할 수 있다. Book 클래스를 만든 후 이 클래스로 객체 배열을 만들어 본다. Book 클래스는 책 이름과 저자를 멤버 변수로 가지는 클래스이다. 자료형을 private로 생성했지만 다른 코드에서 이 클래스를 사용할 때 멤버 변수 값을 가져오거나 지정할 수 있도록 get(), set() 메소드를 구현한다. 마지막으로 책의 정보를 출력해 주는 show() 메소드도 구현한다. package ch07_1; public class Book { private String bookName; private String author; // 디폴드 생성자 public Book() {};..
프로그래밍을 하다 보면 변수를 각각 선언하는 것보다 여러 자료를 한 번에 처리할 수 있는 기능이 필요하다. 배열이란? 배열(array)은 여러 개의 변수를 하나로 묶어 넣은 것이다. 배열을 사용하면 같은 종류의 대량의 데이터를 한 번에 선언할 수 있다. (1) 배열 선언하기 자료형 [] 변수이름 = new 자료형[개수]; 자료형 변수이름 [] = new 자료형[개수]; (2) 배열 초기화하기 int [] studentIDs = new int [] {101,102,103}; int [] studentIDs = {101,102,103}; // new int [] 생략 가능 (3) 배열 사용하기 선언한 배열의 각 요소에 값을 넣을 때나 배열 요소에 있는 값을 가져올 때는 []을 사용한다. 배열의 첫 번째 요소..