객체란[Object-Oriented-Programming]
세상의 모든것을 표현하며, 프로그래밍에서 속성과 기능을 가진 프로그램 단위입니다.
Java에서는 객체지향을 위해 클래스를 이해해야합니다.
객체 지향의 장점은? 개발 소스들을 부품화 시켜 다른 사람들이 만든 검증된 소스를 가져올 수 있습니다.
클래스란?
클래스는 "객체를 생성하기 위한 틀" 로 모든 객체는 클래스로부터 생성됩니다.
클래스는 크게 속성(멤버변수) 와 기능(메서드)로 구성되어 있으며, 생성자를 가지고 있습니다.
클래스의 생성
package lession08_OOP;
// 무형의 존재
public class Vehicle {
// 속성
String classification;
String VehicleName;
int price;
// 기능
public void showInfo() {
System.out.println(classification);
System.out.println(VehicleName);
System.out.println(price);
}
}
객체의 생성
package lession08_OOP;
public class Main {
public static void main(String[] args) {
// 무형의 객체
Vehicle vehicle = new Vehicle(); //클래스를 호출해 객체를 만듭니다.
vehicle.classification = "자동차"; //객체 속성에 값을 넣어줍니다.
vehicle.VehicleName = "소나타";
vehicle.price = 1000;
vehicle.showInfo();
System.out.println(vehicle); //객체는 주소값이 담겨있습니다.
vehicle.classification = "오토바이"; //객체에 새로운 값을 넣어줄 수 있습니다.
vehicle.VehicleName = "스즈키";
vehicle.price = 5000;
vehicle.showInfo();
System.out.println(vehicle); //값은 다르지만, 하나의 주소값을 가진 것을 확인 할 수있습니다.
}
}
객체와 메모리
객체를 생성하면 메모리를 차지하게 되는데 사용하지 않는다면 Garbage Collector가 작동을 하여 메모리 공간을 확보하게 됩니다.
Reference
객체가 담기는 변수명을 reference 라고 합니다.
실제 값이 담기는것이 아니라 주소값이 변수에 담겨있고, 실제 값을 참조한다는 의미입니다.
아래 3개의 vehicle은 모두 다른 공간에 존재하는 다른 객체입니다.
만약, Reference( vehicle1 = null; ) 을 선언하게 된다면 기존의 주소를 더이상 참조하지 않으며, 다시 사용할 경우 주소 값이 변경됩니다
package lession08_OOP;
public class Main {
public static void main(String[] args) {
Vehicle vehicle1 = new Vehicle();
Vehicle vehicle2 = new Vehicle();
Vehicle vehicle3 = new Vehicle();
// vehicle1, vehicle2, vehicle3 은 Java Reference라고 합니다.
System.out.println(vehicle1); //객체는 주소값이 담겨있습니다.
System.out.println(vehicle2); //객체는 주소값이 담겨있습니다.
System.out.println(vehicle3); //객체는 주소값이 담겨있습니다.
vehicle1 = null;
System.out.println(vehicle1); //객체는 주소값이 담겨있습니다.
}
}
'Language > Java' 카테고리의 다른 글
10. Java 생성자와 소멸자 그리고 This (0) | 2020.03.06 |
---|---|
9. Java 메서드 (0) | 2020.03.06 |
6. Java 반복문 (0) | 2020.03.05 |
5. Java 조건문 (0) | 2020.03.05 |
7. Java 배열 (0) | 2020.03.05 |