***원래 클래스를 생성할 때는 파일 하나의 따로 작성하는게 맞다. Animal 클래스를 생성하고싶으면 Animal.java 파일에 작성을 해야하는게 맞지만 설명을 위해서 그냥 HelloWorld.java에서 작성해가며 실행을 해보겠습니다. ***
먼저 class Animal을 만들어보자.
class Animal{
}
public class HelloWorld {
public static void main(String[] args) {
}
}
사실 위에 코드에서 Animal클래스는 빈껍데기 클래스이다. 하지만 껍데기 클래스도 객체를 만들 수 있는 기능을 가지고있다.
class Animal{
}
public class HelloWorld {
public static void main(String[] args) {
Animal cat = new Animal();
}
}
***new 키워드 - 객체 생성 키워드, Animal클래스의 인스턴스, Animal의 객체 cat이 생성됐다.***
객체와 인스턴스의 차이점
Animal cat = new Animal()을 통해 만들어진 cat은 Animal의 객체이다. 그리고 cat이라는 객체는 Animal의 인스턴스 이기도 하다. 즉 인스턴스라는 말은 어떤 객체가 어떤 클래스의 객체인지에 대해 관계를 설명하는 말로 주로 쓰인다.
class Animal{
String name; //class내부에 생성된 변수 -> 객체 변수라고 한다.
}
public class HelloWorld {
public static void main(String[] args) {
Animal cat = new Animal();
System.out.println(cat.name); //객체 : cat , 객체변수 : name;
}
}
String name을 통해 객체변수를 선언하고 값을 출력했더니 null이라는 출력값이 나왔다. 객체변수로 name을 선언했지만 아무런 값도 대입하지 않았기 때문에 null이 출력되었다.
class Animal{
String name; //class내부에 생성된 변수 -> 객체 변수라고 한다.
public void setName(String name){ //setName메서드를 선언함으로써 값을 대입하기
this.name = name;
}
}
public class HelloWorld {
public static void main(String[] args) {
Animal cat = new Animal();
cat.setName("dotae"); // this.name = dotae
System.out.println(cat.name); //객체 : cat , 객체변수 : name;
}
}
Animal 클래스 내부에 setName메서드를 선언하여 값을 대입할 수 있는 메서드를 만든 후 cat.setName("dotae")로 cat.name전에 setName을 호출하여 this.name = "dotae"로 객체변수 name에 값을 대입해주었다.
class Animal{
String name; //class내부에 생성된 변수 -> 객체 변수라고 한다.
public void setName(String name){ //setName메서드를 선언함으로써 값을 대입하기
this.name = name;
}
}
public class HelloWorld {
public static void main(String[] args) {
Animal cat = new Animal();
cat.setName("dotae"); // this.name = dotae
System.out.println(cat.name);//객체 : cat , 객체변수 : name;
Animal dog = new Animal();
dog.setName("jaehyun");
System.out.println(dog.name);
}
}
이처럼 Animal dog = new Animal()을 통해 dog라는 객체를 만들어서 새로 이름값을 대입해주었더니 각각 dotae, jaehyun이라는 값이 출력되었다. 이를 통해 알 수 있는점은 객체변수는 공유되지 않는다는 점이다.
****클래스에서 가장 중요한 점 객체변수의 값이 독립적으로 유지된다는 점이다.****
'JAVA 기초공부' 카테고리의 다른 글
| JAVA - 상속 (1) | 2025.02.05 |
|---|---|
| JAVA - 메서드 (0) | 2025.02.05 |
| JAVA - 객체 지향 프로그래밍이란? (0) | 2025.02.04 |
| JAVA 기초공부(6) - 제어문 (1) | 2025.02.04 |
| JAVA 기초공부(5) - 자료형3 (1) | 2025.02.03 |