Full Stack Dev. Study- JAVA(3)

김영빈·2021년 3월 11일
0

Full Stack Dev. Study

목록 보기
3/8

클래스와 객체

JAVA의 클래스 생성시 원칙 :

하나의 java file에 1개의 class를 두는 것이 원칙이며 혹여 두 개이상의 class를 두었다 하더라도 public class는 1개밖에 생성하지 못한다. 또한, public class와 java file의 이름은 동일해야 한다.

JAVA의 naming convention :

  • package - 소문자
  • class - PascalCase
  • variable, method - camelCase

Memory

Stack Mem. - 지역변수가 올라가는 자리로 함수가 호출되면 함수 내의 지역변수가 쌓이게 되고 함수가 끝나면 없어진다.
Heap Mem. - new keyword를 통해 동적으로 allocate되는데 JAVA는 heap memory에서 안쓰는 부분들을 GC(Garbage Collector)가 알아서 제거한다.

  • 예를 들어 객체가 선언되면 이 객체는 Stack Mem.에 쌓이고 그 객체가 가지고 있는 내용들(attribute)은 Heap Mem.에 쌓인다.
    이 때, 같은 클래스의 다른 객체들이 여러개 생성되면 각각의 내용들이 독립적으로 Heap Mem.에 쌓인다.

this

c++과 동일하게 자신의 메모리를 가리키고 자신의 주소를 반환한다. <

생성자에서 다른 생성자를 호출할 때 사용하기도 한다. <

ex) 아래의 예에서 this("name",1);을 하게되면 파라미터를 가지고 있는 생성자를 호출하는 것과 같다.

public Person() {
	this("name",1);
}
public Person(String name, int age) {
	this.name = name;
    this.age = age;
}

singleton pattern

어떤 클래스가 단 1개의 인스턴스만 생성해야 하는 디자인 패턴으로 JAVA에서 많이 쓰인다.

public class Company {
    // 회사는 단 1개만 있어야 한다. --> singleton pattern
    private static Company instance = new Company(); // 유일하게 사용될 인스턴스.

    private Company() { }

    public static Company getInstance() {
        if(instance == null) {
            instance = new Company(); // 혹시나 null이 되면 다시 생성함.
        }
        return instance;
    }
}

위와 같이 company 클래스의 인스턴스를 하나만 생성하고 생성자를 private으로 선언해서 추가로 생성하지 못하게 한다.
이렇게 되면 company라는 클래스를 외부에서 아예 접근하지 못하기 때문에 인스턴스를 호출할 수 있게 public static method로 getInstance()를 만들어 준다.

마치며

작년에 Spring 스터디를 할 때는 Java를 아예 모르는 상태에서 했기에 Singleton pattern이 익숙치 않았고 어색한 느낌이 강했다.
하지만 한 번 경험하고 나니 왜 이런식으로 코드를 작성해야하는지 이해할 수 있었다. 이제 절반정도 강의를 들은 것 같은데 왜 예전에 Java를 배우지 않았을까라는 생각이 들 정도로 재밌다. 잘 가르쳐주신 강사님께 감사드립니다!

profile
초보 개발자

0개의 댓글