본문 바로가기
컴퓨터 공부/JAVA

2022-09-05 객체 기초

by 구깨비 2022. 9. 5.

1. 객체

 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. 객체는 속성동작으로 구성되어있다.

예를 들어 현실세계의 사람은 이름과 나이라는 '속성'과 웃다,먹다라는 '동작'을 가지고있다.

2. 클래스

클래스는 객체를 찍어내기 위한 틀과 같다. 

우리가 만들고자 하는 객체가 집이라면, 클래스는 집을 짓는 설계도와 같은 것이다.

일반적으로 이런 형태를 취하고 있다.

public class 클래스 {

}

 

3. 필드

필드는 객체의 고유데이터, 상태 등을 저장하는 곳이다.

자동차 객체를 예로 들어보자, 하단의 코드내에 있는 제조회사, 색상, 속도와 같은 정보들이 필드로 선언되어있다.

public class Car{
    String company; // 제조회사
    String color; //색상
    int speed; //속도
}

 

4. 생성자

생성자는 new 연산자와 같이 사용되어 클래스로 부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.

생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다.

생성자 그 자체는 초기화의 역할을 하지 new처럼 객체를 생성하지는 않는다.

public class 클래스 {
	클래스(){}; //생략하면 자동으로 기본 생성자가 들어가게된다.
}

 4-1) 생성자 오버로딩

  자바는 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩을 제공한다. 생성자 오버로딩이란 매개변수를 달리하는 생성자를 여러개 선언하는 것을 말한다.

public class 클래스 {
	클래스(){};
    클래스(String str){};
    클래스(String str,String str2,int num){}; 
}

//주의할 점은 매개변수의 타입과 개수 그리고 선언된 순서가 달라야한다는 것이다.
//하단 클래스내의 생성자는 오버로딩이라 볼 수 없다.
public class 클래스 {
    클래스(String str,String str2){};
    클래스(String str2,String str){};//매개변수의 타입과 갯수, 선언된 순서가 같음.
}

5. 메소드

메소드는 객체의 동작에 해당하는 중괄호 블록을 말한다. 이 중괄호 블록의 이름이 메소드 이름이다.

리턴타입 메소드이름 (매개변수...){

           실행코드
           
}

 5-1) 메소드 오버로딩

 클래스 내에 같은 이름의 메소드를 여러개 선언하는 것을 메소드 오버로딩이라고 한다. 이는 다양한 매개값을 처리할 수 있도록 하기 위함이다. 리턴타입, 매개 변수의 타입/개수/순서는 달라도 메소드명은 같아야 한다.

public class 클래스{
	int plus (int x,int y){
    	return x+y;
    }
    
    double plus (double x,double y){
    	return x+y;
    }
}

6. 정적 멤버,  static

static은 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.

public class 클래스{
  //정적 필드
  static 타입 필드="초기값";
  //정적 메소드
  static 리턴타입 메소드명(매개변수...){...};
}

정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다.

//정적 멤버의 사용법
클래스.필드;
클래스.메소드(매개값);

 

7. 메모리 정리

 

 

 

 

출처:

(도서)이것이 자바다

(블로그) https://2ssue.github.io/base/190509_PJI/

'컴퓨터 공부 > JAVA' 카테고리의 다른 글

2022-09-07 추상클래스와 인터페이스  (0) 2022.09.07
2022-09-06 상속  (0) 2022.09.06
multi-thread 동기화(synchronization)  (0) 2021.09.13
자바 Thread  (0) 2021.09.13
제네릭 프로그래밍  (0) 2021.08.26

댓글