이 블로그는 애드센스 수익으로 운영되고 있습니다.
광고차단앱을 해제해주시면 블로그 운영에 큰 도움이 됩니다.

'Java'에 해당되는 글 1건

  1. Java - 클래스(class)와 객체(object) 2013.03.20

■클래스 

- 객체를 정의하는 기본 형식


■객체

- 클래스 메모리에 생성한 것

- 멤버(변수, 함수) 사용 가


■인스턴스(instance)와 객체(object)의 차이

- 입장 차이

클래스에서 객체는 인스턴스이다.

객체는 생성된 객체 그 자체를 의미한다.


■클래스 형식

- 형식

[접근 제어자] class 클래스명

{

[접근 제어자] 멤버 변수;

[접근 제어자] 멤버 함수;

}

- 접근제어자 : 외부에서 멤버에 접근할 수 있는 권한 설정 (private, protected, public, default)

private : 같은 클래스 안에서만 접근이 가능

protected : 같은 클래스안에서와 다른 패키지에서 상속되었을 때만 접근 가능

public : 제약 없이 사용 가능

default :접근제어자를 생략했을 때 기본 제어자이며 같은 패키지 안에서만 접근가능 


■클래스 생성과 사용 및 메서드 호출

- 생성 : new 키워드 사용


class A{...}

1)A test = new A();

2)A test

   test = new A();



- 메서드(method) 호출

클래스변수.메서드

test.Method


- ex


class A

{

int m_nVar//멤버변수

void Set(int nVar)

{

m_nVar = nVar;

}

void Print()

{

System.out.println(m_nVar);

}

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test1 = new A();

Test1.Set(12);

Test1.Print();

A Test2 = new A();

Test2.Set(3);

Test2.Print();

}


}

결과:

12

3




































■객체 참조변수

- 의미 : 클래스를 선언하면 객체를 참조할 수 있는 객체 참조변수가 된다.

- 선언형식

class A{...}

A Test = new A();

1) A Ref = Test

2) A Ref;

    Ref = Test;


- ex


class A

{

int m_nVar//멤버변수

void Set(int nVar)

{

m_nVar = nVar;

}

void Print()

{

System.out.println(m_nVar);

}

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test1 = new A();

Test1.Set(12);

Test1.Print();

A Test2 = new A();

Test2.Set(3);

Test2.Print();

A Ref = Test1;

Ref.Print();

}


}

결과:

12

3

12








































■자바에서 static선언에 대해서

- static의 특징

공용 멤버(변수, 함수)가 된다

객체 생성 없이 호출이 가능

- static 주의사항

static은 멤버(변수,함수)와 함수명에서만 사용

지역 함수 안에 static붙일 수 없다(C 와 차이점)

static 메서드의 경우 메서드 안에 지역 변수를 포함할 수 없다.

- 멤버와 main외부의 함수에 static이 붙은 경우

class A

{

static int m_nVar//정적 멤버변수

int m_nNum;

static void Set(int nVar)    //정적 멤버함

{

m_nVar = nVar;

//m_nNum = 3;   <- error!!

}

void Print()

{

System.out.println(m_nVar);

}

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A.Set(9);    //

A Test1 = new A();

Test1.Print();


A Test2 = new A();

Test2.Print();


A.Set(3);

Test1.Print();

Test2.Print();

}



}

 


결과:

9

9

3

3













































■함수의 매개변수가 참조형인 경우

class A{...}

class B{

public static void main(String[] args)

{

A test = new A()

Ref(test);                   

}   


static void Ref(A RefClass)     //      == A RefClass = test; 

{

....

}

}



class A

{

int m_nVar;

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test = new A();

Test.m_nVar = 7;

System.out.println(Test.m_nVar);

RefChange(Test);

System.out.println(Test.m_nVar);

}

static void RefChange(A test)

{

test.m_nVar = 9;

}



}

결과:

7



■오버로딩(overloading)

- 한 클래스 안에서 여러 개의 같은 메서드명을 사용하여 정의할 수 있는 기능

- 매개변수로 함수를 구분하여 리턴형은 상관없음

- ex.


class A

{

int add(int nVar1, int nVar2){return nVar1+nVar2;}

float add(float fVar1, float fVar2){return fVar1+fVar2;}

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test = new A();

System.out.println(Test.add(0.5f, 0.3f));

System.out.println(Test.add(2, 7));

}

}

결과:

0.8























■생성자

- 클래스가 생성될 때 자동으로 호출되는 메서드

- 클래스 안의 멤버 변수 초기

- 형식1 : 클래스와 같은 이름을 가지는 메서드로 리턴형이 없다

class A

{

A(){...}

}


- 형식2 : 생성자는 매개변수를 가질 수 있으며 매개변수에 따라 호출된다.

class A

{

int m_nVar;

String m_strName;

A(int nVar){m_nVar = nVar;}

A(int nVar, String strName)

{

m_nVar = nVar;

m_strName = strName

}

}


- ex 


class A

{

int m_nVar;

String m_strName;

A(int nVar){m_nVar = nVar;}

A(int nVar, String strName)

{

m_nVar = nVar;

m_strName = strName;

}

void Print()

{

System.out.println(m_nVar+" ,"+m_strName);

}

}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test = new A(12,"Hello");

Test.Print();

}

}

결과:

12 ,Hello

 































■this 

- 객체 자체를 참조하는 키워드이며 C++의 this와 같은 역 할


class A

{

int m_nVar = 12;

void Print() {System.out.println(this.m_nVar);}


}


public class ex01 {


/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

A Test = new A();

Test.Print();

}

}

결과:

12 



,