Java 프로그래밍 기초 6
1. 객체 지향 프로그래밍이란?
객체 : 프로그래밍에서 속성(property, member variable)와 기능(method)를 가지는 프로그램 단위
클래스 : 객체를 생성하기 위한 틀, 모든 객체는 클래스로부터 생성됨 마찬가지로 속성&메소드 가짐
2. 클래스 및 객체 생성
클래스 생성: 클래스는 멤버 변수, 생성자, 메서드로 구성됨
public class Book{
public String name;
public String author;
public String price; //멤버 변수(속성)
public Book(){} //생성자
public Bookname() {
System.out.println("책의 이름은" + this.name)} //메소드
}
객체 생성 : 클래스로부터 'new' 이용
Book book1 = new Book();
book1.name = "노인과 바다"
book1.author = "어니스트 헤밍웨이"
book1.price = "8000원"
생성자 : - 멤버 변수 초기화 (예를 들어 계산기 프로그램의 경우, 생성자에서 미리 좌우변 할당 가능)
[https://opentutorials.org/module/516/5519]
- 객체 생성시 가장 먼저 호출
- 값을 반환하지 않는다.
- 생성자의 이름은 클래스명과 동일하다
3. 메서드
선언과 호출 : 변수와 같이 선언 및 정의 후 필요시 호출
매개변수 : 메서드 호출시 데이터 전달
중복 메서드 : 이름은 같지만 매개변수의 개수 및 타입이 다른 메서드 제작 가능
접근자 (public, private, protected) : 접근자에 따라 호출 불가능할수도 있음
- public : 어디서든 호출 및 가능
- private : 같은 객체내에서만 서로 접근 가능, 메서드 호출부에서의 호출 불가능
- protected : 외부 접근 X, 동일 패키지, 상속받은 클래스에선 접근 가능
4. 객체와 메모리
메모리에서의 객체 (동적생성) : 객체는 메모리에서 동적으로 생성, 필요없게 되면 GC에 의해 제거
레퍼런스 : 생성한 객체의 주소 (위 객체 생성에서 new는 클래스대로 만든 객체에 주소를 부여하는 것)
객체명자체가 레퍼런스 즉 객체의 주소기 때문에 위에서 Book book2 = new book1으로 하면 book2는 book1의 복제품이 아니라 완전히 같은 객체가 이름만 두개 가지는 꼴. 따라서 이후 book2의 이름을 바꾸면 book1의 이름또한 같이 바뀜
레퍼런스에 null 저장시 객체의 연결이 끊기고 더 이상 객체 이용 불가능, GC 호출
5. 생성자와 소멸자, this 키워드
디폴트 생성자 : 개발자가 명시하지 않아도 컴파일 시점에 자동 생성
사용자 지정 생성자 : 디폴트 생성자 외에 특정 목적에 의해 개발자가 만든 생성자
public class Book {
public Book(){} // 디폴트 생성자
}
public class Car{
public int number;
public Car(int i){
this.number = i;
} //사용자 지정 생성자
}
소멸자 : 객체가 GC에 의해 메모리에서 제거 될 때 finalize() 메소드 호출 (GC에 의해 자동적으로 관리되므로 개발자가 사용하는경우는 적음)
this 키워드 : 현재 객체를 가리킬때 사용 키워드