티스토리 뷰
객체 변수는 공유되지 않는다.
main 메서드 변경
class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
public class Sample {
public static void main(String[] args) {
Animal cat = new Animal();
cat.setName("boby");
Animal dog = new Animal();
dog.setName("happy");
}
}
cat객체에는 "boby"라는 이름을 대입하고 dog객체에는 "happy"라는 이름을 대입했다.
이렇게 하면 setName 메서드에 의해 다음과 같은 문장이 두번 실행될 것이다
cat.name = "boby"; dog.name = "happy";
이럴 경우 dog.name = "happy" 라는 문장이 나중에 수행되므로
cat.name의 값도 "happy"라는 값으로 변경되지는 않을까?
Animal 클래스의 객체변수 name이 cat객체와 dog객체간 서로 공유되는 변수라면 아마도 그럴 것이다.
시도해 보기
class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
public class Sample {
public static void main(String[] args) {
Animal cat = new Animal();
cat.setName("boby"); // 메서드 호출
Animal dog = new Animal();
dog.setName("happy");
System.out.println(cat.name);
System.out.println(dog.name);
}
}
실행 결과
boby
happy
결과를 보면 name 객체 변수는 공유되지 않는다는 것을 확인할 수 있다.
클래스에서 가장 중요한 부분은 그 뭐라해도
이 객체 변수의 값이 독립적으로 유지된다는 점이다.
사실 이 점이 바로 클래스 존재의 이유이기도 하다.
객체 지향적(Object Oriented)이라는 말의 의미도 곱씹어 보면
결국 이 객체 변수의 값이 독립적으로 유지되기 때문에 가능한 것이다.
객체 변수의 값은 공유되지 않지만 static을 이용하게 되면 객체 변수를 공유하도록 만들 수도 있다.
728x90
반응형
'[개발] - Java > Mega' 카테고리의 다른 글
[보충] 메소드의 입력값과 리턴값 (0) | 2023.03.29 |
---|---|
[보충] 메소드 기초 - 메소드 개념, 매개변수와 인 (0) | 2023.03.29 |
[보충] 객체 지향에 대한 이해 - 메소드(1) (0) | 2023.03.29 |
[보충] 객체 지향에 대한 이해 - 클래스 (0) | 2023.03.29 |
[보충] 객체 지향 프로그래밍에 대한 이해 (0) | 2023.03.29 |
Comments