출처(http://www.shop-wiz.com/document/android/sample2_save_get1 ) 에서 가져왔음을 알립니다.
삭제요청시 삭제처리 합니다.
1. 클래스(Class)
- 클래스의 정의
: Java에서 클래스란 속성변수와 메소드를 정의해 놓은 일종의 틀(=템플릿)이다.
- 속성변수의 기능
: (특징, 정보)-기본 자료형의 데이터 또는 참조형 데이터를 저장한다.
- 메소드의 기능
: (행동)-변수의 조작, 데이터의 조작, 다른 메소드의 호출, 객체의 생성 등의 실행 방법과 실행 과정을 정의한다.
- 클래스의 특징
: 클래스 파일(~.class)로 저장되어 있다.
: 클래스 파일을 만들려면 자바 파일(~.java)을 만든 후 컴파일하면 클래스 파일이 생성된다.
: [클래스]에 정의된 속성변수와 메소드를 프로그램에서 실제 사용하려면 메모리공간에 할당해 놓고 사용한다.
: 이때 메모리공간에 할당된 클래스는 [객체]라고 부른다.
<참고>Instance : [객체]의 위치 정보를 저장하는 [객체참조변수]를 말한다.-관용적으로 [객체]를 지칭하기도 한다.
: 한번 작성되어 저장된 [클래스]는 여러 번 재사용이 가능하다.
: 하나의 클래스는 여러 번 객체화하여 사용할 수 있다.
: 자주 사용되는 기능을 가진 [클래스]들은 이미 개발자에 의해 미리 만들어져 JDK 안에 내장되어 있다.
- 클래스의 구조
[public] [abstract|final] class 클래스명{
public|protected|private|default [static|final] 기본자료형|클래스명 속성변수명;
public|protected|private|default 클래스명([자료형 매개변수])
public|protected|private|default [static][synchronized][final|abstract] 기본자료형|클래스명|void 메소드명
([자료형 매개변수])
}
- 클래스의 외형
* abstract: { }(body)가 없는 메소드를 하나이상 소유한 클래스는 반드시 abstract를 사용해야 한다.
* final : 자식 클래스를 생성할 수 없다
* final 메소드 : 재 정의 불가능(상속된 후 자식 클래스가 메소드를 수정할 수 없게 한다)
* final 클래스 : 상속 불가능(자식 클래스를 생성하지 않는다.)
* final 변수 : 재 갱신 불가능(현재 할당된 값을 변경할수없다.)
*static: 객체생성이 필요 없이 메소드나 속성변수를 호출 할 수 있다
*synchronized: 2개 이상의 스레드가 메소드에 동시접근이 불가능 하도록 한다.
* 메소드
* 기본형(default):메소드가 끝나고 int or double를 리턴한다
* 클래스명 : 해당클래스의 객체 메모리 주소를 리턴한다
* void: 아무것도 리턴하지 않는다
* [속성변수], [생성자], [메소드]를 클래스를 구성하는 [멤버]라고 한다.
- 클래스의 이름과 영역
: public
같은 패키지 또는 다른 패키지에 속한 클래스에서 수입하여 객체화가 가능한 클래스를 의미한다.
:default(생략)
같은 패키지에 속한 클래스에서만 수입하여 객체화가 가능한 클래스를 의미한다
:abstract
블록({~})이 없는 메소드를 하나 이상 소유한 클래스를 의미한다. [추상클래스]라고 한다
:final
상속이 불가능한 클래스를 의미한다. [종단클래스]라고 한다
* abstract 과 final 이 동시에 클래스명 앞에 올 수 없다.
abstract 은 상속이 목적이고 final 은 상속(inheritance) 불가가 목적이므로 서로 상충한다.
<참고>하나의 소스파일에 2개 이상의 클래스가 존재할 때 main( ) 가 포함된 클래스 이외의 클래스에는
pubic 이 붙을 수 없다.
- 속성변수
[기본형 데이터] 또는 [객체의 위치 정보]를 저장할 기억 장소이다.
[생성자]나 [메소드] 안에서 선언된 변수는 속성변수가 아니라 [생성자]나 [메소드] 내부에서만
사용이 가능한 [지역 변수]이다.
선언된 속성변수는 클래스가 객체화 될 때 자동으로 디폴트 초기값이 입력된다.
(지역변수는 자동초기화 되지 않는다)
- 접근지정자의 기능과 종류
접근지정자는 다른 클래스에서 속성변수에 대한 호출 가능 여부의 정도를 설정한다.
종류
|
같은 패키지 안에서의 호출 여부 |
다른 패키지 안에서의 호출 여부 |
종류 |
클래스 내부에서 |
다른 클래스에서 |
서브 클래스에서 |
다른 클래스에서 |
public |
O |
O |
O |
O |
protected |
O |
O |
O |
X |
default(생략) |
O |
O |
X |
X |
private |
O |
X |
X |
X |
<참고>패키지 - 비슷한 종류의 클래스나 인터페이스들을 하나의 이름으로 묶어 놓은 것을 말한다.
<참고>default 란 아무 접근지정자도 붙지 않음을 의미한다.
- 성격지정자의 기능과 종류
: 속성변수의 성격을 설정한다.
종류 |
의미 |
final |
처음에 한번 저장된 데이터는 갱신이 불가능하다. |
|
final 이 붙은 변수를 종단 변수라고 한다. |
|
final 이 붙은 변수는 모두 대문자로 표현하는 것이 관용적이다. |
|
클래스를 객체화시키지 않고 속성변수 사용을 가능하게 한다. |
static |
동일한 클래스가 2개 이상 객체화될 때 공동으로 소유하는 속성변수이다. (일종의 전역 변수) |
|
<참고>static 이 붙은 변수를 클래스 변수라고도 한다클래스명.변수명 으로 사용함 |
- 자료 유형의 기능과 종류
: 속성변수 안에 저장될 데이터의 유형을 설정한다.
: 속성변수는 선언하자마자 자동으로 초기화(처음 데이터의 입력)되므로 선언 후에 할당하지 않고도 사용이 가능하다.
: 지역 변수는 선언하자마자 자동으로 초기화되지 않으므로 선언 후에 꼭 할당하고 사용해야 한다.(안 그럼 오류!)
종류 |
의미 |
기본자료형 |
기본 자료형의 데이터를 저장할 변수를 선언할 때 붙인다. |
|
선언 후 데이터의 할당은 주로 [생성자메소드]나 [메소드] 안에서 이루어진다. |
|
기본 자료형의 데이터를 저장할 변수를 기본형(primitive type) 변수라고 한다. |
|
기본형으로 속성변수를 선언하면 다음과 같은 자동 초기값 0 이 설정된다. |
|
boolean : false, char : '\u0000', byte : 0, short : 0, int : 0, long : 0L, float : 0.0F, double : 0.0 |
클래스명 |
[클래스]를 객체화 할 때 [객체]의 위치 주소를 저장할 변수를 선언할 때 붙인다. |
|
선언 후 [객체의 위치 주소] 할당은 주로 메소드 안에서 이루어진다. |
|
[객체]의 위치 주소를 저장할 변수를 참조형(reference type) 변수라고 한다. |
|
참조형으로 속성변수를 선언하면 null 으로 자동 초기값이 설정된다. |
2. 생성자
: new에 의해서 객체를 생성할 때 자동으로 한번만 호출되는 메소드
클래스를 객체화시킬 때 자동으로 한번만 호출되는 일종의 [메소드] 이다.(생성자의 실행이 완료된 후 객체가 생성된다.)
객체 생성 시 자동으로 설정하고자 하는 내용을 삽입하여 편리를 도모한다. (주로 객체의 초기화를 담당)
- 접근지정자의 기능과 종류
: public
클래스 이름에 public 이 붙은 상태에서 같은 패키지 또는 다른 패키지에 속한 클래스에서import 하여 객체화할 때
생성자 자동 호출이 가능하다. (package 부분에서 나옴)
: default(생략)
클래스 이름에 public 이 붙은 상태에서 같은 패키지에 속한 클래스에서만 import 하여 객체화할 때 생성자
자동 호출이 가능하다. (package 부분에서 나옴)
- 생성자 이름의 규칙
클래스 이름과 반드시 동일해야한다.
리턴형을 표시하지 않는다.
생성자는 다른 생성자를 호출할 수 있다. (this(~) 사용)
생성자 호출 시 데이터를 전달해서 호출할 경우에는 매개변수를 설정한다.
- 생성자 오버로딩(Overloading)
같은 이름의 [생성자] 를 2개 이상 정의하는 것을 말한다.
[생성자]의 이름은 같더라도 [매개변수의 개수]나 [매개변수의 자료형]은 달라야한다.
오버로딩이 된 [생성자]를 호출할 때에는 [생성자명], [매개변수의 개수], [매개변수의 자료형]를 정확히 지정해 호출한다.
3. 메소드
- 접근 지정자
: 다른 클래스에서 [메소드]에 접근 가능 여부, 즉 호출 가능 여부를 설정한다.
| 같은 패키지 안에서의 호출 여부 | 다른 패키지 안에서의 호출 여부 |
종류 | 클래스 내부에서 | 다른 클래스에서 | 서브 클래스에서 | 다른 클래스에서 |
public | O | O | O | O |
protected | O | O | O | X |
default(생략) | O | O | X | X |
private | O | X | X | X |
- 성격 지정자
:메소드의 성격을 설정한다. inheritance
종류 | 의미 |
static | 클래스를 객체화시키지 않고 메소드 사용이 가능하게 한다.ex) 클라스명.메소드명 |
final | 상속 후 메소드의 재정의가 불가능하게 한다. |
abstract | 메소드의 처리 내용이 없는({}없는), 메소드 이름이 있는 메소드다. |
synchronized | 스레드의 임계영역 처리에 사용하게 한다.-두개 이상의 스레드가 하나의 메소드에 동시 접근 불가능 하게만들어 버릴 때 사용 ex) 서울지점, 부산지점 동시 입금 |
- 리턴형의 기능과 종류
:[메소드]가 실행된 후에 내놓는 값(반환값)의 유형을 설정한다.
종류 |
의미 |
기본자료형 |
[메소드]가 실행된 후 기본 자료형의 데이터를 반환한다.-return 명령어 뒤에 반환되는 데이터를 놓는다. |
클래스명 |
[메소드]가 실행된 후 [객체]의 위치 정보를 반환한다.-return 명령어 뒤에 반환되는 [객체의 위치 정보]를 놓는다. |
void |
[메소드]가 실행된 후에 아무런 값도 반환하지 않는다. |
- 매개변수
:[메소드] 호출할 때 데이터를 전달해서 호출할 경우 [메소드]에는 전달한 데이터를 받아들이는 [매개변수]를 설정한다.
[매개변수]는 메소드 안에서만 사용되는 일종의 지역변수이다.
- 메소드 오버로딩(Overloading)
:같은 이름의 [메소드]를 2개 이상 정의하는 것을 말한다.
[메소드]의 이름은 같더라도 [매개변수의 개수]나 [매개변수의 자료형]은 달라야한다.
오버로딩이 된 [메소드]를 호출할 때에는 [메소드명]과 [매개변수의 개수]나 [매개변수의 자료형]를 정확히 호출한다.
<참고> 메소드 오버라이딩 - 자식 클래스가 부모클래스의 메소드를 그대로 가져다가 재정의 하는 것
4. 클래스로부터의 객체 생성, 속성변수 호출, 메소드 호출 방법
- 속성변수 또는 메소드에 static 이 붙지 않은 경우
절차 호출형식
①클래스를 객체화한다. 클래스명 객체참조변수;객체참조변수 = new 클래스명(...);
②속성변수 또느 메소드를 호출한다. 객체참조변수.속성변수;
객체참조변수.메소드;
- 속성변수 또는 메소드에 static 이 붙은 경우
절차 호출형식
①속성변수 또느 메소드를 호출한다. 클래스명.속성변수;
클래스명.메소드;
5. this 예약어
- 자기 자신 [클래스]가 소유한 [속성변수], [메소드], [생성자]를 지칭할 때 사용한다.
: 사용 목적
①[메소드]의 매개변수와 [속성변수]의 변수 명이 같을 경우 구별하기 위해 사용한다.
②부모 클래스와 자식 클래스의 [속성변수] 또는 [메소드] 또는 [생성자]의 이름이 같을 경우 구별하기 위해 사용한다.
(상속에서 예제 등장)
- 사용 형식
this.속성 :속성변수 호출 시
this.메소드(~) : 메소드 호출 시
this(~) : 생성자 호출 시
this : 자기 자신의 객체 참조변수 호출 시
'Create > And_prg' 카테고리의 다른 글
(개인용) 안드로이드 Log 종류 (0) | 2014.10.15 |
---|---|
(개인용) Android Viewpager 클래스 참고 (0) | 2014.09.30 |
(개인용) 안드로이드 v4 라이브러리 설치 (0) | 2014.09.26 |
(개인용) apk 소스참고하기 (0) | 2014.09.25 |
(개인용)안드로이드 용어 정리 (0) | 2014.09.23 |