1. 다형성(Polymorphism) 1.1 다형성이란? 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력' 을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 예제를 통해서 더 자세히 알아보자. public class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv exten..
1. 패키지(Package) 패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 지금까지는 단순히 클래스 이름으로만 클래스를 구분 했지만 클래스의 실제 이름(full name)은 패키지명을 포함한 것이다. 예를 들면 String 클래스의 패키지명을 포함한 이름은 java.lang.String이다. 즉, java.lang 패키지에 속한 String 클래스라는 의미이다. 그래서 같은 이름의 클래스일지라도 서로 다른 패키지에 속하면 패키지명으로 구별 가능하다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 그래서 어떤 패키지에 ..
1. 상속 1.1 상속의 정의와 장점 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 자바에서 상속을 구현하는 방법은 아주 간단하다. 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써주기만 하면 된다. class Child extends Parent { ... } 이 두 클래스는 서로 상속 관계에 있다고 하며, 상속해주는 클래스를 '조상클래스', 상속 받는 클래스를 '자손 클래스' 라고 한다. 조상 클래스 : 부모(parent) 클래스, 상위(super) 클래스..
오버로딩(Overloading) 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 메소드 오버로딩 또는 간단히 오버로딩 이라 한다. 같은 이름의 메소드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립되려면 아래와 같은 조건을 만족해야 한다. 1. 메소드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩된 메소드들은 매개변수에 의해서만 구분될 수 있으므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다. int add(int a, int b) { return a + b; } int add(int x, int y) { return x + y; } 위 두 메소드는 매개변수의 이름만 다른 뿐 매개변수의 타입이 같기 때문에 오버로딩이 성립하지 ..
변수 선언위치에 따른 변수의 종류 변수는 클래스변수, 인스턴스변수, 지역변수 세 종류가 있다. 변수의 종류를 결정짓는 중요한 요소는 변수의 선언된 위치이다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스 변수이다. class Variable { int iv; // 인스턴스 변수(멤버 변수) static int cv; // 클래스 변수(멤버 변수) void method() { int lv = 0; // 지역 변수 } } 변수의 종류 선언 위치 생성 시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때 인스턴스 변수 인스턴스가 생성되었을 때 지역 변수 클래스 영역 이외의 영역 (메소드, 생성자, 초기화 블럭 내부) 변수..
객체지향언어 객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.' 라는 것이다. 객체지향언어 객체지향언어는 기존 프로그래밍언어와는 다르게 아예 새로운 개념이 아니라, 기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 것이다. 이러한 규칙들을 이용해서 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다. 객체지향언어의 주요 특징은 다음과 같다. 1. 코드의 재사용성이 높다. → 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. → 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래..