1) 추상클래스(Abstract Class) : 추상클래스는 추상메서드(abstract method)를 포함하고 있는 클래스를 말합니다. 추상메서드란 구체적이지 않은 내용을 정의한 메서드를 말하는 것으로 추상 메서드로 정의된 메서드는 서브 클래스에서 반드시 오버라이딩을 통해 구현해야 합니다. 추상클래스 자체는 new를 통해 인스턴스로 만들 수 없고 반드시 상속을 통해 구체적인 클래스를 만들어서 사용해야 합니다. 추상클래스를 상속해서 구현하는 것을 콘크리트 클래스(Concrete Class)라고도 부릅니다. 2) 인터페이스(Interface) : 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 또한 인터페..
분류 전체보기
상속(Inheritance) : 상속은 클래스 간의 상하 관계로 추상적인 슈퍼 클래스(부모 클래스)로부터 서브 클래스(자식 클래스)를 만드는 것으로 상속이라는 관계를 통해 계층구조를 형성합니다. 클래스 상속의 특징 : 슈퍼 클래스에서 정의된 필드와 메서드를 참조받습니다. 새로운 필드나 메서드를 추가할 수 있습니다. 슈퍼 클래스에서 물려받은 메서드를 수정할 수 있습니다.(오버라이딩) 동일 슈퍼 클래스를 상속하는 모든 서브 클래스는 타입 호환이 됩니다. 상속을 이용하면 코드의 재사용이 가능해지고 부모 클래스 레벨에서 호환되는 서브 클래스를 사용해 다형성의 기반을 마련할 수 있습니다. 오버라이딩(Overriding) : 슈퍼 클래스로부터 상속받은 메서드를 다시 정의하는 것을 말합니다. 메서드의 이름과 리턴 타..
1) 키보드 입력 : 컴퓨터 프로그램의 기본 구조는 입력 → 처리 → 출력의 과정입니다. 프로그램에서 처리 과정을 실행하기 위해서는 데이터를 받아야 하는데 대표적인 방법은 키보드를 통해 데이터를 입력하는 것입니다. 1-1) 표준 입출력 : 입출력 장치는 다양하게 있을 수 있고 자바에는 가장 기본이 되는 키보드 표준 입력 System.in과 표준 출력 System.out으로 정의돼 있습니다. 이들 객체는 각각 java.io.InputStream, java.io.PrintStream 클래스의 인스턴스입니다. 1-2) java.util.Scanner : Scanner 클래스는 입력 스트림으로부터 데이터를 읽어오기 위한 유틸리티 클래스입니다. 스트림은 데이터 입출력을 위한 통로로 파일과 연결된 스트림을 사용하면..
1) 배열(Arrays)의 특징 : 가장 대표적인 자료구조입니다. 데이터를 저장해 0부터 시작하는 인덱스를 통해 배열에 접근할 수 있습니다. 일반적인 배열은 선언할 때 크기가 고정됩니다. 데이터를 순차적으로만 접근할 수 있기 때문에 위치를 모르는 경우 효율이 떨어집니다. 배열에 들어가는 데이터는 모두 동일한 자료형이어야 합니다. 배열 중간에 값을 추가하려면 기존 데이터를 모두 이동시켜야 합니다. 2) 배열 선언 및 데이터 사용 int scores[] = {12,45,27,17}; int[] scores = {12,45,27,17}; int[] scores = new int[4]; scores[2] = 90; // 3번째 요소(27)을 90으로 변경합니다. System.out.println(scores[0..
반복문(Loop statement) : 특정 코드 블럭을 반복하기 위해 사용합니다. for, while, do ~ while문이 대표적이고 대게 관계연산자와 함께 사용됩니다. 모든 반복문은 조건을 벗어나는 조건이 잘못 설정된 경우 무한루프에 빠질 수도 있으니 주의해야 합니다. 더보기 for(초기값 ; 조건식 ; 증감식){ ... } 기본적이고 흔히 볼 수 있는 for문의 형태입니다. for문의 초기값, 조건식, 증감식은 생략이 가능합니다. 단, 세미콜론은 있어야 하고 for(;;)는 무한루프가 됩니다. 더보기 for(변수 : 집합형 데이터) { ... } for - each, 혹은 for - in 형식의 구문입니다. 배열, Collection(데이터의 집합)과 같은 집합형 데이터 처리에 적합합니다. 더보..

UTF-8로 통일해도 콘솔 창에는 깨진 문자들이 나와서 해결 방법을 알려드리려 합니다. 다른 글들을 보고 기본 설정이나 기타 프로젝트에 관한 설정들도 UTF-8로 통일했지만 서버의 환경 설정 문제였습니다. 1) 이클립스 메뉴의 "Run - Run Configurations"로 들어갑니다. 2) 위 탭들 중에 'Common' 탭을 클릭하고 Encoding 설정을 확인합니다. 대부분의 경우 UTF-8로 Default 설정이 돼있을 텐데 저처럼 Other을 선택하시고 'MS949'를 선택해주시면 됩니다. 선택란에 없을 경우 입력해주셔도 무방합니다. Apply 클릭 후 파일을 실행하시면 한글이 정상적으로 뜨실 겁니다.
조건문(Conditional statement) : 조건문은 조건에 따라 프로그램을 수행하기 위해 관계 연산자와 함께 사용합니다. 프로그램에서 무언가의 입력을 받고, 입력된 값에 따라 동작을 다르게 하거나 특정 조건에 따라 처리되도록 하는 경우 조건문을 사용합니다. 대표적인 조건문은 if이며 다양한 조건 설정을 위해 if ~ else if 등이 사용됩니다. switch 조건문은 조건 값에 따라 수행 블럭을 구분해서 정의할 수 있습니다. 참/거짓을 이용한 3항 연산도 있습니다. 1) if 문 : 조건에 따라 코드 블럭을 수행합니다. 더보기 if(조건식) { 실행 코드 블럭 } 수행 문장이 하나라면 중괄호 {}을 생략 가능합니다. 수행조건은 관계 연산과 논리 연산의 조합을 통해 설정 가능합니다. 조건에 따라..
자바 메모리 관리 JVM은 시스템(운영체제)으로부터 프로그램을 실행하는데 필요한 메모리를 할당받고 JVM은 할당받은 메모리를 용도에 따라 세 영역으로 나누어 관리합니다. 자바는 C언와 같이 직접적인 메모리 주소에 접근할 수 없으며 개발자가 메모리를 할당받거나 반환하지 않아도 되는 구조이기 때문에 일반적인 응용 프로그래머의 경우 구체적인 메모리 관리에 대해서는 자세히 알 필요는 없습니다. 메서드 영역 프로그램 실행 중 특정 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*. class)을 읽어서 분석한 다음 클래스에 대한 정보를 이곳에 저장하게 됩니다. 이때 클래스변수나 메서드(static)도 이 영역에 함께 생성됩니다. main()에서 클래스에 선언된 변수에 접근할 수 없는 것도 이러한 이유로 ..