개발/Java

JAVA_07_클래스

onivv 2024. 7. 15. 16:54
반응형

#1 객체 지향 프로그래밍 (OOP : Object-Oriented Programming)

  • 객체를 중심으로 프로그램 구조를 설계하고 프로그래밍 하는 것
  • 객체 : 일반적으로 상태를 표현할 수 있고, 행동으로 실행할 수 있는 모든 것

 

#2 객체와 클래스

▶ 클래스란?

  • 객체를 생성하기 위한 제작 설명서
  • 이 클래스를 기반으로 객체를 생성
  • 자바에서는 하나의 클래스로 여러 개의 객체 생성 & 사용 가능

▶ 클래스 선언

public class Car {	// Car 클래스 선언

}
  • 실행용 : 프로그램 전체에서 단 하나의 클래스로, 프로그램의 실행을 전적으로 맡음. 프로그램의 시작 메서드인 main()을 가지고 있는 클래스를 말하며, 다른 클래스에서 사용하지 않음
  • 라이브러리용 : 다른 클래스에서 이용할 목적으로 선언되는 클래스
접근 제한자 class 클래스명 {	// 접근 제한자 : 변수와 마찬가지로 클래스의 접근 범위를 제한

}
------------------------------------------------------------
// 예제

// <Cat.java>
public class Cat {

}

// <EX.java>
public class EX {
	public static void main() {
		// 클래스명 객체명
		Cat C;			
		// 선언한 객체 변수에 객체를 생성해 대입 (new; 객체를 생성하는 키워드)
		C = new CatC();		
		// 위 두줄을 한줄로 작성
		Cat C = new CatC();
	}
}

 

 

#3 클래스의 구성

▶ 구성 요소

  • 필드(field)
  • 메서드(method)
  • 생성자(constructor)

1) 필드

  • 객체가 가져야 할 데이터, 상태를 저장하는 변수
  • 클래스 내에 정의되고 객체가 생성될 때 그 객체와 함께 존재하는 데이터
  • 클래스 선언 시, 필드의 값을 초기화 하지 않으면 객체 생성 시 자동으로 기본값으로 초기화
  • 필드에 접근하는 방법 : 객체명.필드명

2) 메서드

  • 객체의 특정 기능을 수행하는 코드 블록
  • 특정 기능을 수행하는 코드를 따로 빼서 중괄호{} 안에 작성
  • 1개의 메서드는 일반적으로 1개의 기능을 수행
  • 메서드 호출시 블록 안에 있는 코드들이 위에서부터 순차적으로 모두 실행되고, 경우에 따라 실행한 결과를 호출한 곳으로 다시 돌려줌 == 반환하다 , 반환하는 결과값 == 리턴값
    • 리턴값이 있는 경우 : 리턴값의 자료형을 반환 타입으로 작성
    • 리턴값이 없는 경우 : 반환 타입을 void로 작성
  • 메서드 사용 : 객체 생성 후 참조 변수를 이용 --> 객체명.메서드명()

3) 생성자

  • 객체를 생성하면서 객체 변수를 초기화 하는 역할(기능)을 하는 메서드
  • 클래스명 객체명 = new 클래스명();   ---> 이 메서드가 생성자
  • 직접 선언하지 않아도 기본 생성자가 자동으로 생성
  • 객체를 사용하려면 객체 변수가 메모리에 있어야함, 메모리에 객체 변수를 올려주는 역할을 생성자가 해줌

 

#4 정적 멤버와 static

1) 인스턴스 멤버 & 정적 멤버

  • 클래스 멤버 : 클래스 안에서 선언된 필드와 메서드
  • 인스턴스(객체) 멤버 : 각 객체가 가지게 되는 필드와 메서드
  • 정적 멤버 : 모든 객체들이 공유하며 사용하는 하나의 필드와 메서드

2) 정적 멤버

  • 필드와 메서드를 선언할 때 static이라는 키워드가 붙은 멤버
  • 객체마다 가지는 데이터 기능이 아니기 때문에 모든 객체가 같은 값을 가져야 할 경우에 사용
  • static 키워드 : 객체가 아닌 클래스에 의존적인 요소
    • static이 앞에 붙은 멤버들은 다른 멤버들과는 달리 객체를 생성하지 않고 바로 사용 가능
    • 객체를 생성할 때 메모리에 올라가는 것이 아니라, 프로그램을 시작할 때 메모리에 올라가고 프로그램이 종료될 때 메모리에서 사라짐
    • 메서드 안에 지역변수는 static으로 선언 불가
    • 호출 방법 : 클래스 이름을 통해 호출 --> 클래스명.필드; 클래스명.메서드();
반응형