본문 바로가기
자바 프로그래밍/강의 노트

클래스와 객체D

by 세인트킴 2023. 5. 22.

non - static member

  • 공간적 특성 - 멤버들은 객체마다 독립적으로 별도 존재(인스턴스 멤버)
  • 시간적 특성 - 필드와 메소드는 객체 생성 후 비로소 사용 가능
  • 비공유 특성 - 멤버들은 다른 객체에 의해 공유되지 않고 배타적이다.

static member

  • 공간적 특성 - static 멤버들은 클래스 당 하나만 생성(클래스 멤버)
  • 시간적 특성 - static 맴버들은 클래스가 로딩될 때 공간 할당, 객체를 생성하지 않고 사용가능하다.
  • 공유의 특성 - static 멤버들은 동일한 클래스의 모든 객체에 의해 공유

difference of non - static member and static member

static member의 활용

1. 전역 변수와 전역 함수를 만들 때 활용할 수 있다.

  • Math클래스: java.lang.Math, 모든 필드와 메소드가 public static으로 선언, 다른 모든 클래스에서 사용할 수 있다.

2. 공유 멤버를 작성할 때 

  • static 필드나 메소드는 하나만 생성해서 클래스의 객체를 공유한다. 

static 메소드의 제약 조건 

  • static 메소드는 non - static 멤버에 접근할 수 없다. 객체가 생성되지 않은 상황에서도 static 메소드는 실행될 수 있기 때문에, non - static 메소드와 필드 사용이 불가능하지만 non - static 메소드는 static 멤버를 사용할 수 있다.

  • static 메소드는 this 사용이 불가능하다. static 메소드는 객체가 생성되지 않은 상황에서도 호출이 가능하므로, 현재 객체를 가리키는 this 레퍼런스는 사용할 수 없다.

final 클래스와 메소드

final 클래스 - 클래스 상속 불가능

final class FinalClass {
		....
}
class SubClass extends FinalClass { // 컴파일 오류. FinalClass 상속 불가능
		....
}

final 메소드 - 오버라이딩 불가능

public class SuperClass {
	protected final int finalMethod() { ... }
}

class SubClass extends SuperClass { // SubClass가 SuperClass 상속
		protected int finalMethod() { ... } // 컴파일 오류, 오버라이딩 할 수 없음
}

final 필드

상수 선언, 선언 시 초기 값을 지정해야 한다. 상수 필드는 실행 중에 값을 변경할 수 없다. 

class SharedClass {
	public static final double PI = 3.14;
}

public class FinalFieldClass {
	final int ROWS = 10; // 상수 정의, 초기 값 10 설정
	void f() {
    	int[] intArray = new int [ROWS}; // 상수 활용
        	'ROWS = 30;' // 컴파일 오류 발생, final 필드 값을 변경할 수 없다.
	}
}

Math메소드 설명

static double random() 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환함.
static double abs(double a)
static double abs(float a)
static double abs(int a)
static double abs(long a)
전달된 값이 음수이면 그 값의 절댓값을 반환하며, 전달된 값이 양수이면 인수를 그대로 반환함.
static double ceil(double a) 전달된 double형 값의 소수 부분이 존재하면 소수 부분을 무조건 올리고 반환함.
static double floor(double a) 전달된 double형 값의 소수 부분이 존재하면 소수 부분을 무조건 버리고 반환함.
static long round(double a)
static int round(float a)
전달된 값을 소수점 첫째 자리에서 반올림한 정수를 반환함.
static double rint(double a) 전달된 double형 값과 가장 가까운 정수값을 double형으로 반환함.
static double max(double a, double b)
static float max(float a, float b)
static long max(long a, long b)
static int max(int a, int b)
전달된 두 값을 비교하여 큰 값을 반환함.
static double min(double a, double b)
static float min(float a, float b)
static long min(long a, long b)
static int min(int a, int b)
전달된 두 값을 비교하여 작은 값을 반환함.
static double pow(double a, double b) 전달된 두 개의 double형 값을 가지고 제곱 연산을 수행하여, ab을 반환함.
static double sqrt(double a) 전달된 double형 값의 제곱근 값을 반환함.
static double sin(double a)
static double cos(double a)
static double tan(double a)
전달된 double형 값에 해당하는 각각의 삼각 함숫값을 반환함.
static double toDegrees(double angrad) 호도법의 라디안 값을 대략적인 육십분법의 각도 값으로 변환함.
static double toRaidans(double angdeg) 육십분법의 각도 값을 대략적인 호도법의 라디안 값으로 변환함.

'자바 프로그래밍 > 강의 노트' 카테고리의 다른 글

상속B  (0) 2023.06.05
상속A  (0) 2023.05.29
클래스와 객체C  (0) 2023.05.15
클래스와 객체B  (0) 2023.05.08
클래스와 객체A  (0) 2023.04.24