클래스, 필드, 메서드, 매개변수, 인수, 객체, 생성자

kmb·2022년 2월 2일
0

자바

목록 보기
8/31
post-thumbnail

클래스

객체(object)를 만들 수 있는 설계도. 상태(=필드) + 행위(=메서드)가 정의되어 있다.

 

  • 클래스 선언
public class 클래스이름 {

}

 

  • 클래스 이름 작성 규칙
작성 규칙예시
1하나 이상의 문자로 이루어져야 한다Car, SportsCar
2첫번째 글자는 숫자가 올 수 없다Car, 3Car(x)
3'$', '_' 외의 특수 문자는 사용할 수 없다$Car, _Car, @Car(x), #Car(x)
4자바 키워드는 사용할 수 없다int(x), for(x)

필드

객체의 고유 데이터 및 상태 정보를 저장하는 곳.

 

  • 필드 선언
[접근제한자] 반환타입 필드명 [= 초기값] ;

 

  • 필드 특징

필드는 생성자메서드에서 변경이 가능하다.
(단 외부 클래스에서 필드를 변경하려면 객체와 도트.를 이용해서 변경해야 한다)

public class Car {
	int speed;  // 필드
	
    Car() {  
	  speed = 50;  // 생성자에서 필드 변경
	}
    
    void method() {
      speed = 10;	  // 메서드에서 필드 변경
    }
}

public class CarExample {

	public static void main(String[] args) {
		
        Car car = new Car();  // 객체 생성
        
        car.speed = 100;  // 외부 클래스인 CarExample 클래스에서 Car클래스의 필드인 speed를 변경
	}
}

메서드

클래스에서 특정 작업을 수행 하기위한 행위를 의미.
객체간의 데이터 전달 수단. 기능 및 동작 역할을 한다.
메서드가 실행되면 stack 공간에 쌓인다.

 

  • 메서드 선언
[접근제한자] 반환타입 메서드이름 (매개변수) {
	
    실행 할 코드 작성
}

반환타입에서 반환값이 없을 경우에는 void, 반환값이 있을 경우에는 동일한 반환타입이 와야한다.

반환(return)을 하는 이유?
--> stack의 생명주기가 짧기 때문에 stack 내부의 값을 사용하려면 return을 사용해야 한다.

매개변수는 메서드가 실행될 때 필요한 데이터를 외부에서 받기 위해 사용한다.

 

  • 메서드 호출
1. 내부 클래스에서 메서드 호출 할 경우
void run() { ... };
void stop() { ... };

void 내부메서드() {
  run();
  stop();
}

2. 외부 클래스에서 메서드 호출 할 경우
void 외부메서드() {
  
  클래스 인스턴스변수 = new 클래스();
  
  인스턴스변수.run();
  인스턴스변수.stop();
}

매개변수(parameter, 인자)

메서드의 소괄호 ( ) 안에 들어가는 변수.
초기화의 목적을 갖는다.

인수(argument)

메서드를 호출했을때 넣는 임의의 값.

 
ex) 매개변수 및 인수 예제

public class MethodEx03 {
	
    static void 자판기음료1 (int coin) {
    	System.out.println("동전 투입");
    }
    
    static void 자판기음료2 (double paper) {
    	System.out.println("지폐 투입");
    }
    
    static void 자판기음료3 (String card) {
    	System.out.println("카드 투입");
    }
    
    static void add (int n1, int n2) {
    	
        int sum = n1 + n2;
        System.out.println(sum);
    }
    
    public static void main(String[] args) {
    	
        자판기음료1(500);		// 인수 : 메서드 안에 들어간 임의의값
        자판기음료2(1000.50);
        자판기음료3("삼성카드");
        add(5,6);
    }
}

객체

자신의 속성을 가지고 있고 다른 것과 식별 가능한 것. 속성(=필드) + 동작(=메서드)로 이루어져 있다.
객체들은 각각 독립적이며 다른 객체와 메서드를 통해 서로 상호작용 하면서 동작.

 

  • 객체 선언
1. 클래스 변수;
   변수 = new 클래스();
   
2. 클래스 변수 = new 클래스();

인스턴스 : new 연산자와 생성자를 이용해서 만들어진 객체를 의미.

오브젝트 : new 연산자를 사용하여 인스턴스가 될 수 있을 경우 (아직 new 연산자 이용해서 객체 변수를 생성하지 않은 상태)

객체지향프로그램 OOP(Object Oriented Programing)에서 상태(=필드)는 행위(=메서드)에 의해서 변경되어야한다. (즉 클래스의 필드는 메서드에 의해 변한다)

누군가는 상태(=필드)를 직접 변경할 수 있기 때문에 상태(=필드) 앞에 접근제어자 private를 붙여서 접근 할 수 없도록 해야한다.


생성자

클래스명과 같은 이름을 가진 메서드.
new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 위해 사용.

 

  • 생성자 선언
1. 기본생성자
[public] 클래스() {

}

2. 명시적으로 생성자 선언
클래스 (매개변수) {
   // 객체의 초기화 코드
}

모든 클래스는 기본 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다.
클래스 내부에 생성자 선언을 생략하면 컴파일러가 클래스 내부에 기본생성자(default constructor)를 바이트 코드에 자동으로 추가시킨다.

 
ex) 생성자 예시

public class Cat {
	
    String name;
    String color;
    
    public Cat() {
    
    }
    
    public Cat(String n, String c) {
    	name = n;
        color = c;
    }
}

public class CatApp {
	
    public staic void main(String[] args) {
    	
        Cat c1 = new Cat();
        System.out.println("c1 = " + c1.name + ", " + c1.color);  // c1 = null, null
        
        Cat c2 = new Cat("집사", "하얀색");
        System.out.println("c2 = " + c2.name + ", " + c2.color);  // c2 = 집사, 하얀색
    }
}

public 클래스이름( ) { }은 기본 생성자이며 생략 가능하다. 하지만 매개변수를 갖는 임의의 생성자를 만들었다면 기본 생성자를 필수적으로 만들어야한다.

new 연산자를 이용하여 다른 상태(state)를 갖는 객체를 만들기 위해서 필드를 초기화 하지않고 선언만 한다.

 

출처

  • 이지업 컨텐츠 내의 데어프로그래밍 자바강의
  • 이것이 자바다(책)
profile
꾸준하게

0개의 댓글