A sentimental robot

The elements of "Class" 본문

Java

The elements of "Class"

GOD03219 2017. 12. 28. 13:42

<Class의 구성요소>



필드( field ) 

  • 클래스 안에 존재하는 데이터, 객체를 사용할때 지속적으로 사용되어지는 변수  

  • main함수 내에 있는 변수는 필드가 아니라 지역변수이다.

  • 접근지정자를 캡슐화 하기 위해 private를 주로 사용한다.


 메소드( method )


  • 외부에서 내부의 필드를 사용할 수 있게 해주는 기능 ( 연결 시켜주는 기능 )

1) instance method : object를 생성해야만 생성되는 메소드

2) static method : 객체와 무관하게 미리 만들어지는 메소드, 클래스를 통틀어서 오직 한 개다. 접근지정자로 public를 주로 사용한                          다.ex) public static void main

 


 생성자( constructor )

 

1) new 연산자에 의해 객체 생성 시 자동호출 되어지는 함수

   (즉, 생성자를 호출하지 못할 경우, 객체가 등록이 안된다.)


2) Default Constructor ( 기본 생성자 )

- 모든 클래스는 생성자가 반드시 존재하며 하나 이상 가질 수 있다.

- 생성자 선언을 생략하면 컴파일러는 기본 생성자 제공



3) 명시적으로 생성자를 만들 경우, default 생성자는 존재하지 않는다.


4) 생성자를 통해 사용자는 초기값 없이 선언된 필드를 객체가 생성될 때 기본값으로 자동 설정( 쓰레기값 방지 )

   생성자의 매개값으로 초기값 설정한다.


5) 생성자 함수는 클래스 이름과 동일한 이름으로 만든다.  


6) return이 없다.


7) 오버로딩( Overloading )이 가능하다.

- 동일한 함수명으로 여러개의 함수를 만들어 사용->다형성

- 조건 : a. 함수의 이름이 같으면서 매개변수의 타입이 다를 경우 b. 매개변수의 갯수가 다를 경우

- 같은 기능을 하는 것끼리만 사용을 권장한다.


8) 외부에서 생성자 함수를 호출할 수 있도록 하기 위해 접근지정자를 public으로 사용한다. 







import java.util.Scanner;

public class Hello2 {
 int data;     // field

 public Hello2(int a) // 명시적으로 default 생성자 만듬
 {
  System.out.println("생성자야");
  data = a;   // 필드 초기화
 }

public Hello2(){    //오버로딩!
 
}

 public static void main(String[] args) {
         
  Scanner sc = new Scanner(System.in);

  Hello2 hello;    // reference variable
  hello = new Hello2(10000);     // 생성자 함수 호출


  System.out.println(hello.data);   // 10000 출력


  Hello2 ct = new Hello2();   // 명시적으로 생성자를 만들었기 때문에 error...( )안에 int 타입 변수를 안넣어 주었기 때문에
                                     // 이 때, overloading이 필요하다.

  System.out.println(ct.data);     // 초기화가 안되어 있기 때문에 0출력


 }

}




public class Hello2 {
 int data;

 public Hello2(int a) 
 {
  System.out.println("생성자야");
  data = a;
 }

 public Hello2() {   // 오버로딩!
  data = 1000;
 }

 public void setData(int a) {   // 입력함수(Setter)
  data = a;

 }

 public int getData() {        // 값 리턴 함수(Getter)
  return data;
 }

 public static void main(String[] ar) {

  Hello2 hello; 
  Hello2 ct = new Hello2();


  System.out.println(ct.getData());    //생성자에서 초기화 돼서 1000출력
  ct.setData(3000);
  System.out.println(ct.getData());       // 3000출력
 }

}

'Java' 카테고리의 다른 글

Object oriented style exercise  (0) 2017.12.28
Object-oriented style score management  (0) 2017.12.28
Score Management[Three dimensional]  (0) 2017.12.28
Score Management[Two dimensional]  (0) 2017.12.28
String class  (0) 2017.12.28