자바/Java 자바 용어 정리 ~!
<자바 용어 정리 입니다>
1) 클래스(Class)
클래스란 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype). 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화(abstraction) 해 놓은 것.
2) 추상클래스
추상 클래스는 객체가 가지는 특성들을 추상화시켜 놓았을 뿐 아직 구체화 시키지 못한 클래스이므로, 이 추상클래스를 상속하는 하위 클래스에서 좀 더 구체화 시키도록 하는 것이다. 따라서, 추상클래스를 상위 클래스로 하여 상속하는 하위 클래스는 추상클래스 인 상위 클래스에서 완전히 구현하지 못한 부분들을 완전하게 구현해 주어야만 하위 클래스에 대한 객체 생성이 가능하고, 그렇지 못할 경우 하위 클래스는 상위 클래스인 추상 클래스와 같이 미완성이므로 자체적으로 객체를 생성할 수 없고, 이 하위 클래스는 다시 추상 클래스가 된다.
* 추상 메소드의 특징
- 추상메소드는 추상클래스와 마찬가지로 아직 구현이 이루어지지 않고 단지 그 프로토입만 가지고 있는 메소드이다.
1. 추상메소드는 미완성 메소드이어야 하므로, 메소드의 몸체(body)를 가질수 없다
2. 추상메소드는 클래스가 가져야 할 인터페이스에 대한 프로토타입(메소드의 형태)을 정의하고 있다.
3. 추상메소드는 하위클래스가 가져야 할 인터페이스를 정의한다.
4. 추상메소드를 포함하는 클래스는 반드시 추상클래스로 선언되어야 한다.
* 추상클래스(메소드) 선언 시 주의사항
1. abstract 메소드를 하나라도 가지고 있다면 그 클래스는 반드시 abstract 클래스로 선언되어야 한다.
2. abstract 클래스는 직접 객체를 생성할 수 없다.
3. abstract 클래스를 사용하기 위해서는 이 클래스를 상속한 클래스에서 abstract 메소드를 구현해 주어야만 한다.
4. 만약 abstract 클래스를 상속했는 데 abstract 메소드를 구현해 주지 않았다면 이 클래스 역시 abstract 클래스로 선언되어야 한다.
5. abstact 한 메소드가 없어도 abstract class로 선언할 수 있다.( 상속을 통해서만 접근 가능)
3) 상속(Inheritance)
객체지향 개념은 클래스를 이용하여 다른 클래스를 생성 또는 정의할 수 있다. 다시 말해서, 하위클래스는 상위클래스가 갖고 있는 모든 특성들을 상속하여 사용할 수 있다. 이러한 상속 관계를 트리로 나타낼 수 있고, 이 상속관계 트리를 클래스 계층도(class hierarchy)라 한다. 상속의 장점을 살펴보면, 상위클래스는 하위클래스들이 가질 수 있는 일반적인 상태와 행동을 정의하고 있고, 하위클래스는 하위클래스 만이 갖는 특별한 상태와 행동을 정의하도록 함으로써 상위클래스를 여러 하위클래스들이 재사용할 수 있고 소프트웨어 개발에 드는 비용을 감소할 수 있다. 프로그램 개발자는상위클래스를 일반적인 행동(genericbehavior)을 정의하도록 할 수 있고, 이러한 클래스를 추상 클래스(abstract class)라 한다. 이러한 추상 클래스는 부분적으로 구현되거나 구현이나 정의가 이루어지지 않을 수 있는데, 이는 하위클래스를 정의하면서 완성할 수 있도록 가이드라인을 제공해 주는 역할을 한다.
4) 인터페이스
추상메소드와 파이널 변수로만 이루어진 클래스. 따라서, 인터페이스 내에 정의된 메소드는 자바에 의해 자동으로 ‘public abstract’로 변수는 자동으로 ‘public static final’로 선언된다. 구현이 이루어지지 않은 추상메소드를 포함하고 있는 인터페이스는 객체 생성을 할 수 없다. 클래스가 인터페이스를 구현해주어야 상속이 가능하다. 이 때, 클래스는 인터페이스의 모든 메소드 및 변수들을 상속하게 되며, 인터페이스에 정의되어 있는 모든 메소드를 구현해 주지 않을 경우 이 클래스는 추상메소드를 포함하고 있으므로 추상클래스로 선언되어야 한다.
다음은 인터페이스의 일반적인 형태이다.
접근지정자 interface 인터페이스이름 [extends 상위인터페이스] {
상수선언;
메소드선언;
}
* 인터페이스의 용도
1. 강제적인 클래스 관계를 만들지 않으면서 서로 관련없는 클래스들 상이의 유사성을 나타내야 할 경우
2. 하나 이상의 클래스들이 구현하기를 원하는 메소드를 선언할 경우
3. 클래스를 보여주지 않고서 객체의 프로그래밍 인터페이스를 보여주어야 할 경우
* 인터페이스와 다중상속의 차이
자바에서 인터페이스가 다중 상속을 할 수 있도록 해준다고 하는데, 인터페이스는 다중 상속을 할 수 있도록 해 주는 것이 아니라 다중 상속을 하는 것처럼 해 주는 것이다.
1. 클래스는 인터페이스로부터 단지 상수만을 상속한다.
2. 클래스는 인터페이스로부터 메소드의 구현(몸체)에 대해서는 상속할 수 없다.
3. 인터페이스의 계층 구조는 클래스의 계층 구조와 서로 무관하다.
- 같은 인터페이스를 구현하는 클래스들은 클래스 계층 구조 상에서 서로 관련이 있을 수도 없을 수도 있다. 이러한 특성 때문에 진정한 다중 상속이라 할 수 없다. 그러나 자바에서는 하나의 인터페이스가 여러 개의 상위인터페이스를 가질 수 있도록 함으로써, 다중 인터페이스 상속을 할 수 있도록 해 준다.
* 인터페이스의 구현
클래스가 이 인터페이스를 상속(implements)하여 인터페이스에 정의된 모든 메소드를 구현해 주어야 객체생성이 가능하다. 그리고, 클래스의 상속에서 하나의 클래스는 하나의 클래스만을 직속으로 상속할 수 있는 것과는 달리, 하나의 클래스는 여러 개의 인터페이스를 구현해 줄 수 있다.
인터페이스도 클래스와 마찬가지로 인터페이스를 상속할 수 있다. 그러나, 클래스 상속과 한 가지 차이점은 클래스는 오직 하나의 클래스만 상속 가능한테 비해, 인터페이스는 여러 개의 인터페이스를 상속할 수 있다. 인터페이스가 상속하는 상위인터페이스들은 ‘,’로 구분하고, 상위인터페이스가 가지는 모든 상수와 메소드들을 상속하게 된다.
다음은 인터페이스 구현의 일반적인 형태이다.
접근지정자 class [extends 클래스이름] implements 상위인터페이스리스트 {
// 인터페이스에 선언된 메소드 구현
}
5) 커넥션풀이란??
커넥션 풀 기법이란 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool)속에 저장해 두고 있다가 필요 할때에 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 기법을 의미 한다.
동시 접속자가 사용하는곳에 많이 사용하는 기법.
6) Overloading Method
하나의 이름으로 여러 개의 메서드를 가지고 있다.
같은 이름을 가진 여러 개의 메서드를 말합니다. 보통 다중정의, 중복 메서드라고 부르며 일반적으로는 Overloading이라고 합니다. 이것은 하나의 이름으로 여러 개의 메서드를 가지고 있다는 뜻을 내포하고 있다.
* Overloading Method의 규칙
n매개변수의 개수가 달라야 한다.
n매개변수의 타입이 달라야 한다.
n위의 개수와 타입 중 하나만 달라도 중복메서드의 조건이 성립 됩니다.
n메서드의 리턴타입은 중복메서드 구분할 때 사용하지 않습니다.
7) 오버라이딩
상속관계에서 상위 클래스와 하위 클래스에 동일한 이름의 메서드가 있는 것을 보고 이야기 하는 것
8) 오버로딩와 오버라이딩의 공통점
오버로드와 오버라이드는 메소드의 이름이 같지만 때에 따라 다른 기능을 가지므로 다형성을 구현한 것
9) 인스턴스(Instance)
클래스를 실제로 사용할 수 있도록 선언하는 것, 다시 말해서 클래스에 대한 변수를 선언하는 것을 “인스턴스를 생성한다(instantiate)”라 하고, 이렇게 생성된 변수를 인스턴스라 하며, 이 인스턴스는 메모리 공간을 차지하게 된다. 그리고 인스턴스의 메소드를 이용하여 변수들의 값을 설정 및 변경할 수 있다.
10) 객체(Object)
클래스를 실제 사용할 수 있도록 변수 선언한 것을 인스턴스이며, 이 인스턴스를 객체라 할 수 있다. 객체는 높은 모듈성(modularity)과 정보은닉(information hiding)의 장점을 제공.
11) 다형성(Polymorphism)
다형성의 기본 개념은 여러 개의 클래스가 같은 메시지에 대해서 각자의 방법으로 작용할 수 있는 능력이라고 볼 수 있다. 다형성은 같은 이름을 갖는 여러 가지 형태가 존재한다. 다형성을 제공해 주기 위해 C++에서는 연산자 다중 정의(overloading), 함수 다중 정의, 그리고 함수 재정의(overriding) 등을 제공해 주고 있지만, 자바에서는 메소드(함수) 다중 정의와 메소드 재정의를 제공해 주고 있다.
12) static
1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
- 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적기 때문에 서로 다른 값을 유지한다.
경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static 을붙인다.
2. static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
- static이 붙은 멤버변수(클래스변수)는 클래스가 메모리에 올라갈때 이미 자동적으로
생성되기 때문이다.
3. static이 붙은 메서드(함수)에서는 인스턴스 변수를 사용할 수 없다.
- static이 메서드는 인스턴스 생성 없이 호출가능한 반면, 인스턴스 변수는 인스턴스를 생성해야만 존재하기 때문에... static이 붙은 메서드(클래스메서드)를 호출할 때 인스턴스가 생성되어있을수도 그렇지 않을 수도 있어서 static이 붙은 메서드에서 인스턴스변수의 사용을 허용하지 않는다.
(반대로, 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다. 인스턴스변수가 존재한다는 것은 static이 붙은 변수가 이미 메모리에 존재한다는 것을 의미하기 때문이다.)
4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
- 메서드의 작업내용중에서 인스턴스 변수를 필요로 한다면, static을 붙일 수 없다.
반대로 인스턴스변수를 필요로 하지 않는다면, 가능하면 static을 붙이는 것이 좋다.
메서드 호출시간이 짧아지기 때문에 효율이 높아진다.
(static을 안붙인 메서드는 실행시 호출되어야할 메서드를 찾는 과정이 추가적으로 필요하기 때문에 시간이 더 걸린다.)
5. 클래스 설계시 static의 사용지침
- 먼저 클래스의 멤버변수중 모든 인스턴스에 공통된 값을 유지해야하는 것이 있는지 살펴보고 있으면, static을 붙여준다.
- 작성한 메서드 중에서 인스턴스 변수를 사용하지 않는 메서드에 대해서 static을 붙일 것을 고려한다.
일반적으로 인스턴스변수와 관련된 작업을 하는 메서드는 인스턴스메서드(static이 안붙은
메서드)이고 static변수(클래스변수)와 관련된 작업을 하는 메서드는 클래스메서드(static이 붙은 메서드)라고 보면 된다.
출처 : http://blog.naver.com/PostView.nhn?blogId=chong052&logNo=110045167228
'JAVA > 개념정리' 카테고리의 다른 글
자바/Java 자바의 다형성이란? (1) | 2013.01.14 |
---|---|
자바/Java instanceof 연산자란? (1) | 2013.01.14 |
자바/Java break문, contunue문, 이름 붙은 반복문 사용법 (0) | 2012.07.12 |
자바/Java JVM 메모리 구조 (0) | 2012.07.03 |
자바/Java static의 사용법과 개념예 (2) | 2012.07.03 |