이롭게 현명하게

[JAVA] 자바 객체와 클래스 본문

JAVA

[JAVA] 자바 객체와 클래스

dev_y.h 2023. 4. 12. 18:20
728x90
반응형


 

목차

 

객체와 클래스

클래스 선언

객체 생성과 클래스 변수

클래스의 구성 멤버

필드

생성자

메소드

 


<정리>

클래스(class) : 객체를 만들어내기 위한 설계도 혹은 틀, 객체의 속성(state)과 행동(behavior) 포함

객체(Object) : 클래스의 모양 그대로 찍어낸 실체

  • 프로그램 실행 중에 생성되는 실체
  • 메모리 공간을 갖는 구체적인 실체
  • 인스턴스라고도 부른다.
public class ClassName{
	//필드 : 객체의 데이터가 저장되는 곳
    int fieldName;
    
    //생성자 : 객체 생성 시 초기화 역할 담당
    ClassName(){ ... }
    ClassName(자료형 변수명){ ... }//오버로딩

	//메소드 : 객체의 동작에 해당하는 실행 블록
    void methodName() { ... }
    void methodName(자료형 변수명) { ... } // 오버로딩
}

<객체 생성>

new 객체

 

생성자 : 객체가 생성될 때 초기화를 위해 실행됨

<생성자 특징>

  • 클래스 이름과 반드시 동일
  • 생성자 여러 개 작성 가능(오버로딩)
  • 리턴 타입을 지정할 수 없음
  • 생성자의 목적은 객체 초기화
  • 생성자는 객체가 생성될 때 반드시 호출됨(하나 이상 선언되어야 한다.)

 

메소드 : 클래스의 멤버함수

접근지정자 리턴타입 MethodName(매개변수1, ... ) { ... }

[객체와 클래스]

현실 세계에서 자동차를 만들기 위해서는 설계도를 보고 자동차를 만들어야 한다.

객체 지향 프로그래밍에서도 설계도를 보고 자동차를 만든다.

이때 객체지향 프로그래밍에서의 설계도는 클래스라고 한다.(Class)

 

클래스(Class) : 객체를 만들어 내기 위한 설계도 혹은 틀

- 객체의 속성(state)과 행동(behavior) 포함

객체(Object) : 클래스의 모양 그대로 찍어낸 실체

- 프로그램 실행 중에 생성되는 실체

- 메모리 공간을 갖는 구체적인 실체

- 인스턴스(instance)라고도 부른다.

 


[클래스 선언]

public class 클래스이름{

}

<클래스 이름>

  • 첫 자를 대문자로 하고 나머지는 소문자로 작성(ex. 카멜 표기법)
  • 서로 다른 단어가 혼합된 이름을 사용한다면 각 단어의 첫머리글자는 대문자로 작성(ex. 파스칼표기법)

클래스 이름을 정했다면 "클래스이름.java"로 소스를 생성한다.

소스 파일 이름도 대문자를 구분하므로 반드시 클래스 이름과 대소문자가 같도록 해야 한다.

// Car.java //
public class Car{

}

두 개 이상의 클래스가 선언된 소스파일을 컴파일하면 바이트 코드 파일은 (.class) 클래스를 선언한 개수만큼 생긴다.

소스 파일은 클래스 선언을 담고 잇는 저장 단위일 뿐, 클래스 자체가 아니다.

코드를 컴파일하면 Car.class 와 Tire.class 가 각각 생성된다.

※ 주의! 파일이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다.

파일 이름과 일치하지 않는 클래스 선언에 public 접근 제한자를 붙이면 컴파일 에러가 발생한다.

소스파일 하나당 동일한 이름의 클래스 하나를 선언하는 것이 좋다.

// Car.java //

public class Car {

}
class Tire{
	
}

[객체 생성과 클래스 변수]

클래스로부터 new 연산자를 사용하여 객체를 생성한다.

new 클래스();
클래스 변수 = new 클래스();

new : 클래스로부터 객체를 생성시키는 연산자

- new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성된다.

- 메모리 내에서 생성된 객체의 위치를 모르면 객체를 사용할 수 없다. 그래서 new 연산자는 힙 영역에 객체를 생성시킨 후, 객체의 주소를 리턴하도록 되어있다.

 

c1과 c2가 참조하는 Car 객체는 완전히 독립된 서로 다른 객체이다.

public class Car {
	public static void main(String[] args) {
		Car c1 = new Car();
		System.out.println("c1 변수가 Car 객체를 참조한다.");
		Car c2 = new Car();
		System.out.println("c2 변수가 또다른 Car 객체를 참조한다.");
	
	}
}

<클래스의 용도>

  1. 라이브러리용(API : Application Program Interface)
  2. 실행용

 

라이브러리 클래스 : 다른 클래스에서 사용할 목적으로 설계

실행용 클래스 : 프로그램의 실행 진입점인 main() 메소드를 제공하는 역할

 

대부분의 객체지향 프로그램은 라이브러리(부품 객체 및 완성 객체)와 실행 클래스가 분리되어 있다.

 


[클래스의 구성 멤버]

public class ClassName{
	//필드 : 객체의 데이터가 저장되는 곳
    int fieldName;
    
    //생성자 : 객체 생성 시 초기화 역할 담당
    ClassName(){ ... }

	//메소드 : 객체의 동작에 해당하는 실행 블록
    void methodName() { ... }
}

 

 

 

[JAVA] 자바 클래스 생성

목차 기본 생성자 생성자 선언 필드 초기화 생성자 오버로딩 다른 생성자 호출 public class ClassName{ //필드 : 객체의 데이터가 저장되는 곳 int fieldName; //생성자 : 객체 생성 시 초기화 역할 담당 Class

devyihyun.tistory.com

 

[JAVA] 자바 클래스 필드

public class ClassName{ //필드 : 객체의 데이터가 저장되는 곳 int fieldName; //생성자 : 객체 생성 시 초기화 역할 담당 ClassName(){ ... } //메소드 : 객체의 동작에 해당하는 실행 블록 void methodName() { ... } } [

devyihyun.tistory.com

 

[JAVA] 자바 클래스 메소드

목차 메소드 선언 리턴타입 매개 변수 선언 매개변수의 수를 모를 경우 리턴(return) 문 메소드 오버로딩 메소드 (method) : 객체의 동작에 해당하는 중괄호 블록 리턴타입 메소드이름([매개변수선언

devyihyun.tistory.com

 

[JAVA] 자바 인스턴스 멤버와 this

this : 객체 자신에 대한 레퍼런스 인스턴스(instance) 멤버 : 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말한다. 인스턴스 필드, 인스턴스 메소드라고 부른다. 인스턴스 필드와 메

devyihyun.tistory.com

 

[JAVA] 자바 정적 멤버와 static

목차 정적 멤버 선언 정적 초기화 블록 정적 메소드와 블록 선언 시 주의할 점 싱글톤 [non-static 멤버(인스턴스 멤버)] 공간적 특성 : 멤버들은 객체마다 독립적으로 별도 존재 시간적 특성 : 필드

devyihyun.tistory.com

 

[JAVA] 자바 final 필드와 상수

목차 final 필드 상수(static final) final 클래스 - 클래스 상속 불가 final 메소드 - 오버라이딩 불가 [final 필드(객체별 상수), static final 필드(클래스별 상수)] 상수 static final 필드는 클래스 선언 시에 초

devyihyun.tistory.com

 

 

 

[JAVA] 자바 패키지

패키지 (package) : 자바에서 클래스를 체계적으로 관리하기 위해 사용 프로젝트를 진행하다 보면 수십 개의 클래스를 작성하게 된다. 클래스를 체계적으로 관리하지 않으면 클래스 간의 관계가

devyihyun.tistory.com

 

 

 

[JAVA] 자바 접근 제한자

목차 접근 제한자 클래스의 접근 제한 생성자의 접근 제한 필드와 메소드의 접근 제한 접근 지정자의 종류 : private, protected, public, 디폴트(접근 지정자 생략) 클래스나 일부 멤버를 공개하여 다른

devyihyun.tistory.com

 

[JAVA] 자바 상속 개념

[상속 개념] 상속 (Inheritance) : 부모가 자식에게 물려주는 행위. 즉 , 부모 클래스의 멤버를 자식 클래스에 물려줄 수 있다. 부모클래스 = 상위클래스 자식 클래스 = 하위 클래스 or 파생 클래스 상

devyihyun.tistory.com

 

[JAVA] 자바 클래스 상속

목차 부모 생성자 호출 메소드 재정의 final 클래스와 final 메소드 class 자식클래스 extends 부모클래스{ } 다중 상속이 불가능하다. [부모 생성자 호출] extends 뒤에 부모 클래스를 기술한다. 이때 여

devyihyun.tistory.com

 

 

[JAVA] 자바 추상 클래스와 추상 메소드

목차 추상 클래스 추상 클래스 상속 public abstract class 클래스명{ // 필드 // 생성자 // 메소드 } [추상 클래스] 추상(abstract) : 실체 간에 공통되는 특성을 추출한 것 추상 클래스(abstract class) : abstract

devyihyun.tistory.com

 

 

[JAVA] 자바 인터페이스

[인터페이스] 인터페이스 : 클래스가 구현해야 할 메소드들이 선언되는 추상형 public interface 인터페이스이름{ ... } 상수 : public만 허용, public static final 생략 추상 메소드 : public abstract 생략 가능 de

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

 

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 클래스 생성  (0) 2023.04.14
[JAVA] 자바 클래스 필드  (0) 2023.04.13
[JAVA] 객체 지향 프로그래밍  (0) 2023.04.11
[JAVA] 데이터 타입 분류와 메모리 영역  (0) 2023.04.10
[JAVA] MySQL 이클립스 연동하기  (0) 2023.01.25
Comments