국민내일배움카드 - 고용노동부

에이콘 아카데미

아카데미 이야기 전문가칼럼

전문가칼럼

에이콘 아카데미의 전문 강사님의 분야별 칼럼을 확일 할 수 있습니다.

lesson04) Java강의 -(메서드 정의, 클래스와 인스턴스)

Java강의 - 메서드 정의 , 클래스와 인스턴스 

 

[5] 메서드란?

*특정한  일을 수행 (동작/기능)

 

*메서드의 종류

- static(클래스)메서드 : 인스턴스 불필요

                                 클래스의 이름으로 엑세스 가능

- instance메서드 : 인스턴스 필요

                          반드시 new키워드로 객체(인스턴스,오브젝트,참조변수)를

                          생성해서 액세스

*메서드의 구성

-    [접근 제한자] [활용방법]  반환형  [메서드명] ( [매개변수, ....]) {

ex)   pubilc           static        void      Exercise   ( String name , int age) {

 

*메서드의 접근 제한자

1.public  : 모든 클래스에서 접근 가능

 

2.protected : 같은 패키지 내에서만 접근가능

                  다른 패키지의 경우 상속 관계일 경우는 가능

 

3.default : 같은 패키지 내에서만 가능

 

4.private : 자신의 클래스 내에서만 가능

 

 

*매서드의 활용방법

1.final : 오버라이딩 불가능한 매서드

2.static: 클래스 메서드(클래스 생성 시 만들어짐)

 

            인스턴스는 필요없음

            클래스의 이름으로 접근가능

            동일 클래스 내의 메서드라도

            static은  not static메서드에서 접근불가

           (static은 static끼리만 접근가능)

 

3.abstract : 추상메서드(상속으로 하위 클래스에서 구현)

4.syschronized : 스레드의 동기화에 사용

 

 

Chapter 07. 클래스와 인스턴스

 

 

[1] 클래스

 

 -건물을 지을 때 필요로 하는 설계도면 같은 것

 -건물의 속성들을 정의한 설계도면으로 건물을 건축

  

[2] 객체

 -설계도면에 의해 만들어진 건축물

 

 

*클래스와 객체를 이용하여 붕어빵 프로그램 만들기

 

- 클래스명 FishBread로 클래스 하나 생성하기(메인 메서드 없음)

- 붕어빵 클래스의 속성과 동작을 정의

- 붕어빵의 속성(거의다 변수로 만듬)

-> 팥 , 밀가루 , 색소 , 가스(불) , 틀 , 주전자 , 물 , 아주머니 , 계란 , 설탕 , MSG

 

int 팥 ,밀가루 , 주전자 , 물 , 아줌마 , 계란 , 설탕 ,MSG ;

String 색소 , 틀 ;  

boolean 가스 ;

 

-붕어빵 동작(기능) ,(거의다 메서드로 만듬)

->반죽하다 , 반죽을 틀에 붓는다 , 

   굽는다 , 뒤집는다 , 팥을 붓는다 , 틀에서 꺼낸다

   불을 켠다 , 불을 끈다 , 완성된 붕어빵 팔기

 

-'가스 불 켜기' 메서드 작성  

 

  public void 불켜기(boolean 스위치){

  가스 = 스위치 ;

  System.out.println("불이 켜졌습니다.");

  }

 

-'반죽하기' 메서드 작성

 

  public int 반죽하기(int 밀가루  , int 계란  , int 팥  , int 물 ){

  int 반죽 = 밀가루 + 계란 + 팥 + 물 ;

  System.out.println("반죽완료!");

  return 반죽 ;

  }

 

-'붕어빵 굽기' 메서드 작성

 

   public int 붕어빵굽기(int 반죽 , boolean 불 , int 개수 ){

   int 붕어빵 = 개수 ;

   return 붕어빵 ;

   }

 

 -'붕어빵 팔기' 메서드 작성   

    

   public int 붕어빵팔기(int 돈 ){

   int 단가 = 500 ; (붕어빵 단가 = 500원)

   int 붕어빵 = 돈 /단가 ;

   return 붕어빵 ;

   }

 

- FishBreadMain으로 클래스 하나 더 생성(메인 메서드 있음)

 

  public static void main(String[] args) {

  Ex01_FishBread myFish ; <- Ex01_FishBread myFish를 참조하는 객체 선언 

  myFish = new Ex01_FishBread() ; < - 객체 생성

  

- 불켜기 메서드 호출

  myFish.불켜기(true) ;

 

- 반죽하기 메서드 호출

  int 반죽 = myFish.반죽하기(500, 3, 100, 50) ;

 

- 붕어빵 10개 굽기 메서드 호출  

  int 붕어빵 = myFish.붕어빵굽기(반죽, true, 10) ;

  붕어빵 = myFish.붕어빵팔기(10000);

  System.out.println("만원으로 붕어빵" + 붕어빵 + "마리 판매 완료!");

 

}

 

 

[3] 생성자 ( Constructor )

 

-클래스의 객체가 생성될 때 객체의 초기화 과정을 기술하는 특수 메서드

 

-객체가 생성될때 딱 한번만 호출됨

-return 타입을 정의하면 안됨(void도 쓰면 안됨)

-클래스의 이름과 동일

-매개변수를 달리해서 여러 개 정의 가능

-클래스에 생성자를 아무것도 정의 하지 않은 경우

  컴파일러에서 기본 생성자를 자동으로 추가해 줌

 

@MP3Player클래스와 MP3PlayerMain클래스를 생성

 

public class Ex01_MP3Player {

 

-color와 memory 속성을 지칭하는 인스턴스변수

 

private String Color ; <- 색상을 기억하는 color

int memory ;             <-메모리 용량을 기억하는 memory

 

-price 속성을 저장하는 스태틱(클래스) 변수

static int price ; <-가격

 

-가격을 알려주는 getPrice 스태틱(클래스) 매서드

     public static int getPrice(){

     System.out.println("가격:" + price);

     return price;

  }

   

-기본 생성자 오버로딩

public Ex01_MP3Player(){

System.out.println("Ex01_MP3Player의 기본 생성자가 호출 되었습니다!");

}

 

-메모리의 용량과 색상은 매개변수로 받아서 초기화하는 생성자 오버로딩

 public Ex01_MP3Player(int memory , String color){

 this.memory = memory ;

 this.Color = color ;

 System.out.println(memory + "GB," + color + "색의 MP3객체가 생성되었습니다.");

 }

 

@메인mp3플레이어 클래스 생성

 

public static void main(String[] args) {

 -메모리 용량(1GB)과 색상(파랑)을 매개변수로 받는 생성자를 이용하여

   mp33인스턴스 생성

   Ex01_MP3Player mp33 = new Ex01_MP3Player( 1 , "파랑" );

 

   } 



 

[4] Static 예약어

 

 -메서드나 멤버 변수(전역변수,글로벌 변수,멤버 필드)에 사용가능

 

 -지역 변수나 클래스에는 사용 불가

 

 -멤버 변수에 사용된 static 키워드

   해당 클래스의 모든 객체가 공유하는 변수로 사용됨

 

-클래스가 로드 될 때 static 메모리 공간에 상주

  ==>클래스명.static변수명 또는

       클래스명.static메서드명으로 접근 가능