9. JAVA의 클래스(Class) , 싱글턴(Singleton)
자바는 객체지향언어로서 자바의 클래스란, 객체지향언어의 기본단위 입니다.
객체 지향이란 실제 세계를 모델링하여 소프트웨어를 개발하는 방법으로서,
마치 컴퓨터 부품을 하나씩 사다가 컴퓨터를 조립하는 것과 같은 방법입니다.
객체지향 프로그래밍의 특징
- 추상화(abstraction)
실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화한다. - 캡슐화(encapsulation)
보안적인 기능에 도움을 줌, 규칙 정의, 사용 용도 명확히. 안에 있는 값을 노출하지 않음. - 상속성(inheritance)
부모를 지정하고, 부모의 코드를 가져다가 쓸 수 있는 것. 코드의 재사용성 - 다형성(polymorphism)
변수가 여러 가지 모습으로 변할 수 있는 것.
클래스
사물 하나 하나를 기능별로 묶어서 사용하고, 각 클래스 안에서 역할에 따라 각 클래스의 기능을 서술해 나갑니다.
다른 클래스에서 다른 클래스를 선언 하여 사용할 수 있다.
클래스의 구조
- 멤버변수
멤버 변수(member variable)는 저장공간으로 메소드 밖에서 선언된 변수를 말합니다. - 메서드(method)
기능을 나타냅니다. - 생성자(constructor)
생성자는 클래스로부터 객체가 생성될 때 객체의 초기화 과정을 기술하는 특수한 메소드이며 객체가 생설될 때 무조건 수행됩니다(default).
(1) 생성자란?
클래스 내에는 생성자가 존재합니다.
1. 생성자는 함수와 비슷한 형태를 띄고 있습니다.
2. 생성자의 이름은 클래스의 이름과 동일합니다.
3. 클래스는 곧 객체이고 인스턴스화를 담당합니다.
4. 기본생성자(디폴트생성자)는 아무것도 존재하지 않는 생성자이며, 클래스가 만들어짐과 동시에 기본제공됩니다.
5. 기본생성자(디폴트생성자)는 생성자를 하나라도 정의하는 순간 기본제공되지 않습니다.
6. 생성자를 정의하면 기본생성자를 오버로딩해야 합니다.
7. this키워드를 이용해야 합니다.
(2) 생성자의 목적
1. 해당 클래스 필드를 메모리에 할당 한 후에 할당한 주소값을 리턴한다.
즉, 생성자를 이용해 new 클래스명();한 결과물은 해당 객체의 주소값을 나타내므로 객체를 만든다는것은 만든 객체의 주소값을 가지고 있다는 것을 뜻합니다.
2. 초기화의 목적
생성자는 new하기 때문에 새롭게 초기화한다는 의미를 가지고있습니다.
클래스의 사용
위와 같은 Person클래스가 있습니다.
Person클래스를 사용하기 위해서 객체를 만들어야합니다.
객체를 만드는 방법은 main메소드 안에서
클래스명 객체명 = new 클래스명(생성자에서 지정한 인자 입력); 의 형태로 객체를 만들어 줍니다.
생성자를 따로 생성하지 않았다면 디폴트 생성자가 자동으로 생성되어
클래스명 객체명 = new 클래스명(); 으로 사용하면 됩니다.
클래스의 필드를 사용하는 방법은 객체명.필드 이렇게 사용하면 됩니다.
Singleton
싱글톤이란 단 하나의 객체만 생성할 수 있는 패턴입니다.
싱글톤을 만들려면 클래스 외부에서 new연산자로 생성자를 호출할 수 없게 생성자 앞에 private 접근 제한자를 붙여줍니다.
그리구 자신의 타입인 정적 필드를 하나 선언하고, 자신의 객체를 생성해 초기화 합니다.
정적 필드도 private접근 제한자를 붙여 외부에서 필드값을 변경하지 못하게 합니다.
대신 외부에서 호출할 수 있는 정적 메소드인 getInstance()를 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴해 줍니다.
싱글톤의 객체를 얻기위한 유일한 방법은 getInstance() 메소드를 호출하는 것입니다.
단 하나의 객체만 리턴합니다.
클래스 변수 = 클래스.getInstance();
이상으로 JAVA의 클래스에 대해서 알아보았습니다.
'KoreaIt Academy > JAVA' 카테고리의 다른 글
11. JAVA의 접근 제한자 (0) | 2021.07.18 |
---|---|
10. JAVA의 상속(Inheritance), 오버라이딩(Overriding) (0) | 2021.07.18 |
8. JAVA의 메소드(Method), 오버로딩 (0) | 2021.07.13 |
7. JAVA 배열 (Array) (0) | 2021.07.13 |
6. JAVA의 조건문과 반복문 (0) | 2021.07.10 |
댓글