2024.05.22. WED <D + 2> , 객체지향
B. Object(객체) & Instance(인스턴스)
=> 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(메모리에 적재(로딩)행위) 라고 함.
=> 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함.
=> 인스턴스화는 객체 --> "인스턴스 = 객체"가 성립됨.
B-1. 객체의 구성요소
b-1. 속성 (property) : 멤버변수, 필드, 상태, 특성
b-2. 기능 (function) : 메소드, 함수, 행위
public class variable {
// Data 클래스
static class Data {
int x;
}
// 기본형 매개변수의 메소드 (오버로딩 메소드)
static void change(int x) {
x = 1000;
System.out.println("기본형 매개변수 메소드: x = " + x);
}
// 참조형 반환타입의 메소드
static Data copy(final Data d) {
Data tmp = new Data();
tmp.x = d.x; // 인스턴스 변수의 값을 복사.
return tmp;
}
// 참조형 매개변수의 메소드 (오버로딩 메소드, 주소값이 반환됨)
static void change(Data d) {
d.x = 1000;
System.out.println("참조형 매개변수의 메소드: d.x = " + d.x);
}
// 가변 인자를 사용하는 문자열 연결 메소드
static String concatenate(String delim, String... strings) {
String result = "";
for (String s : strings) {
result += s + delim;
}
// 마지막 구분자 제거
if (result.length() > 0) {
result = result.substring(0, result.length() - delim.length());
}
return result;
}
public static void main(String[] args) {
// 기본형 매개변수와 참조형 매개변수
Data d = new Data();
d.x = 10;
System.out.println("d.x = " + d.x);
// 기본형 매개변수
change(d.x); // d.x가 전달되는 것이 아니고 d.x의 값인 10이 전달됨.
System.out.println("d.x = " + d.x);
// 참조형 매개변수
change(d);
System.out.println("d.x = " + d.x);
Data d2 = copy(d);
System.out.println("d2.x = " + d2.x);
// concatenate 메소드 테스트
String result = concatenate(", ", "apple", "banana", "cherry");
System.out.println("Concatenated string: " + result);
}
}