Java 프로그래밍 기초 6

2020. 3. 10. 12:01Study/Computer Science

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 키워드 : 현재 객체를 가리킬때 사용 키워드

'Study > Computer Science' 카테고리의 다른 글