[JAVA] 클래스, getter/setter, 인스턴스(instance)/정적(static)
2023. 5. 15. 19:32ㆍLanguages/JAVA
💬 기억하고 싶거나 공부한 내용을 기록중입니다 :)
1️⃣ 클래스에 대한 이해
public package packageStudy;
public class ClassStudy{
/* 1. 필드(field)
정의: 객체의 데이터를 저장하는 곳
형태: [접근제어자] [제어자] 타입 필드명 [ = 초기값];
*/
String toolName = "java";
int toolNum = 5;
/* 2. 생성자(constructor)
정의: 필드 초기화, 객체 생성
형태: [접근제어자] 생성자명 (args 리스트){}
*/
public ClassStudy(){
}
/* 3. 메소드(method)
정의: 객체의 실행, 동작
형태: [접근제어자] [제어자] 리턴유형 메소드명 (args 리스트){}
*/
String getToolName(){
return toolName;
}
void setToolName(String toolName){
this.toolName = toolName;
}
}
2️⃣ getter/setter
- 필드를 클래스 외부에서 접근하는 것을 막는다고 한다. 외부에서 값을 마음대로 변경한다면, 해당 객체의 무결성이 무너지기 때문이다.
- 따라서 필드를 선언할 때, 외부에서 마음대로 변경할 수 없도록 제한을 하게 된다. 그런데 이 값들을 다른 실행클래스에서 사용하는 경우도 생긴다. 이럴 때 getter와 setter 메소드는 실행클래스에서 가져오거나 수정할 때 필요한 메소드이다.
public package packageStudy; // 선언 메소드
public class ClassStudy{
private String coffeeName = "ice americano";
public String getCoffeeName(){
return coffeeName;
}
public void setCoffeeName(String coffeeName){
this.coffeeName = coffeeName;
}
}
public package packageStudy;
public class ClassStudy_Main{
public static void main(String[] args){
ClassStudy classStudy = new ClassStudy();
System.out.println(classStudy.getCoffeeName()); // 커피 이름 불러오기
classStudy.setCoffeeName("cafe Latte");
System.out.println(classStudy.getCoffeeName()); // 변경된 커피 이름 불러오기
}
}
3️⃣ 인스턴스 vs 정적
- 인스턴스(instance) 멤버 : 인스턴스 필드와 인스턴스 메소드로 구성됨. 객체(인스턴스)를 생성 후에 사용 가능
ClassName 참조변수 = new ClassName();
- 정적(static) 멤버 : 정적 필드와 정적 메소드로 구성됨. 클래스에 고정된 멤버로, 객체 생성을 따로 하지 않고 사용할 수 있음
public package packageStudy;
public class ClassStudy{
static int numHamBurger = 3;
static int numCheeseBurger = 5;
static int numBurger(int x, int y){
return x+y;
}
}
public package packageStudy;
public class ClassStudy_Main{
int numHamBurger = ClassStudy.numHamBurger;
int numCheeseBurger = ClassStudy.numCheeseBurger;
int numBurger = ClassStudy.numBurger(3,5);
System.out.println(numBurger);
}
* 주의사항
1) non static 메소드에서는 static 메소드로 접근 가능
2) static 메소드에서는 non static 메소드로 접근이 어려움
3) 방법: non static 필드 또는 메소드를 static으로 바꿔주거나, 실행 메소드에서 객체를 생성하여 할당된 참조변수를 통해 접근해야 함
'Languages > JAVA' 카테고리의 다른 글
| [JAVA] 상속(this/super/promotion) (0) | 2023.05.17 |
|---|---|
| [JAVA] 생성자, 접근 제한자, 상수, 상속 (0) | 2023.05.16 |
| [JAVA] 클래스 구성 범위, 참조 변수 선언, 객체 생성 (0) | 2023.05.10 |
| [JAVA] 배열 복사 (0) | 2023.05.09 |
| [JAVA] 데이터 타입, 배열 (0) | 2023.05.08 |