new 연산자와 생성자를 이용하여 인스턴스 생성
클래스 로더를 이용
Spring 프레임워크 등에서 사용
메모리에 있는 인스턴스를 복제(clone)
메모리에 올라가야만 실행 가능하다.
new 연산자를 이용하면 인스턴스가 생성된다.
new를 굉장히 많이 사용하면 메모리에 인스턴스가 많아지고 메모리가 부족해서 프로그램이 죽을 수 있다.
만들고 싶은 프로그램이 있다면, 그 프로그램을 구성하고 있는 객체들이 메모리에 몇 개가 올라가고, 메모리에 올라간 객체들 간에는 어떤 관계를 맺어야 할까를 생각한 후 클래스를 작성해야 한다.
객체 지향의 핵심은
메시징
훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가 보다 모듈이 어떻게커뮤니케이션하는가에 달려있다.
메시징은 어떤 객체가 다른 객체의 메소드를 호출하는 것
-> 객체 지향 프로그래밍을 한다는 것은 메소드가 언제, 어떻게 호출되고 메소드의 이름은 어떻게 지어야 하는지, 어떻게 호출하는 지를 고민해야 한다.
자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체이다. 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라 한다.
자율적인 책임의 특징은 객체가 어떻게 해야 하는가가 아니라 무엇을 해야하는가를 설명한다는 것이다.
출처:객체 지향의 사실과 오해(출판사: 위키북스, 저자: 조영호)
[접근제한자] [static] 리턴type 메소드이름([매개변수,...]) {
실행문
...
}
⭐메소드 이름은 식별자 규칙과 같지만, 소문자로 시작하는 것이 관례이다.
매개변수(parameter): 메소드의 정의 부분에 나열되어 있는 변수
전달인자(argument): 메소드를 호출할 때 전달되는 실제 값
매개변수는 메소드에 전달하는 값
반환값은 메소드가 외부로 반환하는 값
public int method(int x) {
....
}
public void method1() {
....
}
public void method2(int x) {
....
}
public int method3( ) {
....
}
public void method4(int x, int y) {
....
}
⭐메소드 선언 시, 매개변수의 개수와 타입이 중요하다. 변수 명은 이해하기 쉽게 작성하면 된다.