객체


(국어사전) 의사나 행위가 미치는 대상, 문장 내에서 동사의 행위가 미치는 대상

프로그래밍에서는? 데이터와 관련한 알고리즘을 하나의 단위로 묶은 것

 

 

 

 

객체지향 프로그래밍


객체 단위로 묶어 코드를 작성함으로써, 객체 간 상호작용을 활용하는 프로그래밍 방법

  • 추상화: 객체의 세부사항을 숨기고 필요한 기능만을 제공함
  • 다형성: 상속 관계에서 각 객체가 서로 다른 방식으로 작동하도록 함
  • 상속: 기존 클래스를 새로운 클래스가 상속받음으로써 재사용 및 확장이 가능
  • 캡슐화: 데이터와 메서드를 하나로 캡슐화함으로써 객체 데이터 등을 숨겨 보안에 강화

  >>> 코드의 유지보수, 재사용성, 유연성이 커진다는 장점

 

 

클래스


  • 객체를 만들기 위한 설계도
  • 설계도를 만들어두면, 그 설계도대로 객체들을 만들어낼 수 있다.
  • 인스턴스: 클래스를 통해 만들어진 해당 객체 >> 실제 메모리에 생성
  • 멤버변수: 속성(데이터)
  • 멤버메서드: 동작(메서드)
  • 생성자: 객체를 생성할 때 호출하는 특별한 메서드
  • 기본생성자: 클래스 작성 시 별도로 사용자가 작성하지 않으면 자동으로 JVM에서 생성함.
                        별도 작성 있으면 기본생성자 호출 불가!

 

 

 

생성자


  • new키워드와 함께 호출
  • 클래스명과 동일해야한다
  • 반환타입 없다(void조차 없음)
  • 객체 생성 시 반드시 생성자가 호출된다(new로 생성 시)
  • 객체의 멤버 필드를 선언과 동시에 초기화할 때 주로 사용한다
  • 웬만하면 기본 생성자를 직접 만들어주는 것이 좋다!
  • this : 생성된 인스턴스가 가지고 있는, 참조하는 값

 

public class Movie {

//멤버변수
int id;
String title;
String director;
String genre;
int runningTime;

//기본생성자
Movie() {
System.out.println("기본생성자 호출");
}

//매개변수 받는 생성자
Movie(int id, String title, String director, String genre, int runningTime) {
this.id = id;
this.title = title;
this.director = director;
this.genre = genre;
this.runningTime = runningTime;
}

//메서드
void movieInfo() {
System.out.printf("등록번호: %d\n제목: %s\n제작자: %s\n장르: %s\n상영시간: %d", id, title, director, genre, runningTime);
}
    
}

 

 

public class MovieTest {

public static void main(String[] args) {

//객체 생성
Movie movie1 = new Movie(1, "인터스텔라", "놀란", "스릴러", 300);
Movie movie2 = new Movie(2, "마더", "봉준호", "공포", 100);
Movie movie3 = new Movie(3, "아바타", "카메룬", "판타지", 92);

movie1.movieInfo();
System.out.println("\n");
movie2.movieInfo();
System.out.println("\n");
movie3.movieInfo();
System.out.println("\n");
 
}

}