ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 기본 문법(3) - 클래스, 메소드, 객체 형성, 접근지정자, 오버로딩 / class, method, new, object, access modifier, overloading
    앱 개발/Java 2022. 1. 18. 12:22
    반응형

    1. 클래스(class)

    클래스는 변수(필드)와 메소드로 구성된다. 특정한 기능을 하는 사용자정의 자료형이라고 볼 수 있다. 자바에서는 class 없이 함수라는 것이 선언되지 않기 때문에 함수와 class내 method를 구분하지 않는다. 그래서 전반적인 함수 역할을 하는 코드들을 자바에서는 '메소드'라고 부른다. 파이썬 등의 언어에서는 구분하여 사용하기도 한다.

     

    쉽게 이해해보자,

    쿠키를 만들고자 한다. 이 때 쿠키틀은 클래스이고, 쿠키틀에 의해 찍혀진 실제 쿠키 각각은 객체라고 할 수 있다. 클래스는 객체를 만들기위한 설계도 역할을 하며, 객체는 클래스로부터 생성된 실체라고 할 수 있다.

     

    아래는 임의로 작성한 Cookie라는 이름의 class이다. getShape, getColor, getCookingTime, bake와 같은 메소드를 가지고 있으며 클래스 안에서 함수의 형태로 선언되어 있다. 전체 코드는 아래와 같다.

     

    class Main {  
      public static void main(String args[]) {
        class Cookie{
          String shape = "circle";
          String color = "yellow";
          int cookingTime = 0;
          
          void getShape(){
            System.out.println(shape);}
          void getColor(){
            System.out.println(color);}
          void getCookingTime(){
            System.out.println(cookingTime);}
          
          void bake(int time){
            for(int i=0; i<time ; i++){
              cookingTime += 1;}
            color = "brown";
            System.out.println("finished!");
            }}
        
        Cookie cookie1 = new Cookie();
        Cookie cookie2 = new Cookie();
    
        cookie1.bake(30);
        cookie1.getColor();
        cookie1.getCookingTime();
        cookie2.getShape();
        cookie2.getColor();
        
    
    }}

     

     

        1-1. method

    getShape( )는 shape 변수에 저장된 문자열을 출력한다.

    getColor( )는 color 변수에 저장된 문자열을 출력한다.

    getCookingTime( )는 cookingTime 변수에 저장된 숫자를 출력한다.

    bake( )는 매개변수 time을 받아서 time만큼 cookingTime을 증가시키고 color을 "brown" 으로 바꾼다. 이후 "finished!"라는 문자열을 출력한다. 

     

    class 내 메소드(method)는 아래와 같다. 

    method

     

    반응형

        1-2. object 생성

    객체 생성

    new를 이용하여 object를 생성한다. 

    class명 object명 = new class명();

     

     

    2. 접근 지정자(Access modifier)

    클래스의 멤버 각각에 외부에서 접근할 수 있는 범위를 지정

     

    public : 접근 제한 없음

    protected : 동일 패키지와 상속 받은 클래스 내부에서만 접근 가능하다

    default : 동일 패키지 내에서만 접근 가능하다

    private : 동일 클래스 내에서만 접근 가능하다

     

     

    3. 생성자(constructor)

    자바에서 파이썬의 __init__역할을 하는 것이 생성자이다. 

    해당 클래스의 이름과 똑같이 쓰며, 괄호 안에 받을 매개변수를 넣어줄 수 있다.

    this.변수명 을 통해 해당 객체에서 사용하는 변수에 값을 대입해줄 수 있다. (파이썬의 self와 비슷한 개념이다.)

     

     

    4. 오버로딩(overloading)

    오버로딩이란, 같은 클래스 안에서 생성자나 메소드의 이름이 동일하더라도 파라미터의 개수나 자료형(data type)을 달리하여 선언하는 경우를 말한다.

     

        4-1. 메소드 오버로딩(method overloading)

    method overloading

    메소드 오버로딩은 위와 같이, 클래스 내 메소드 이름이 동일하여도 자료형이 다르기 때문에 오류 없이 프로그램이 실행되며, int형의 값을 전달하였을 때에는 위의 메소드가, String형의 값을 전달하였을 때에는 아래의 메소드가 실행된다.

     

        4-2. 생성자 오버로딩(constructor overloading)

    constructor overloading

    생성자도 오버로딩할 수 있는데, 생성자 각각의 매개변수 자료형이나 개수가 달라야하며, 위의 경우, cookie1이라는 객체를 형성하였을 때 String형의 값을 전달하였으므로 위의 생성자가 실행되며, this.shape = string; 문구에 의해 shape에 넘겨받은 "triangle"이 저장된다.

     

     

     

     

     

     

     

    참고문헌

    우재남, 이복기. (2014). 안드로이드 프로그래밍. 서울: 한빛아카데미

     

    반응형

    댓글

Designed by Tistory.