[TIL] Java - 클래스
클래스
- 클래스는 객체를 만들기 위한 설계도이다.
클래스 작성 방법
- Java 크래스의 내부는 아래와 같은 구조로 되어 있다.
public class 클래스명 { // 클래스 선언
Data_Type 변수명; // 클래스 변수 선언
public 클래스명 (파라미터1, 파라미터2, ...) {
// 생성자 구현
}
public Return_Type 메소드명 (파라미터1, 파라미터2, ...) {
// 메소드 구현
}
}
객체 생성과 메소드 호출
-
객체란 실제로 존재하는 것
-
Java 프로그래밍에서 객체란 클래스 설계서대로 작성한 클래스의 속성에 특정한 ㄱ밧드을 대입하여 의미를 가지게 하는 것
-
Java 프로그래밍은 객체를 생성하고, 그 객체를 사용하는 것이다.
-
Java 프로그래밍 방법
- 구현하고자 하는 시스템에서 클래스를 도출한다.
- 클래스의 속성과 행동을 추출하여 클래스 설계서를 작성한다.
- 클래스 설계서를 기반으로 Java 언어를 이용하여 클래스를 작성한다.
- 클래스의 속성에 특정한 값을 대입하여 객체를 생성한다.
- 객체를 이용하여 메소드르 호출한다.
-
키워드 new를 사용하여 객체 생성하기
클래스명 변수명 = new 클래스명();
- 이미 만들어진 객체를 이용하여 필드와 메소드 호출하기
변수명.필드명;
변수명.메소드명(값, ...);
메소드 오버로딩(Overloading)
- 메소드 오버로딩이란?
- 한 클래스 내에 비슷한 기능의 메소드를 같은 이름으로 여러 개 정의하는 것
- 메소드 오버로딩의 조건
- 메소드 이름이 같아야 한다.
- 메소드 파라미터의 개수, 데이터 타입, 순서가 달라야 한다.
- 메소드 리턴 타입과는 아무런 상관이 없다.
생성자
-
생성자는 클래스를 이용하여 객체를 만들어 주는 작업자다.
-
자동으로 만들어주는 기본 생성자
- 모든 클래스는 객체를 생성할 수 있도록 최소한 하나의 생성자를 갖는다.
- 클래스에 생성자가 하나도 없다면, 자동으로 기본 생성자가 추가된다.
- 기본 생성자란, 매개변수가 없고 내용이 없는 생성자이다.
-
파라미터 있는 생성자의 역할
- 객체를 만들 때, 필드의 초기값을 세팅
-
this
- 내 클래스에 있는 필드나 멤버 메소드에 접근하고 싶을 때 사용하는 키워드
-
생성자 추가 시 주의점
- 파라미터가 있는 생성자가 하나라도 있다면, 자동으로 기본 생성자를 만들지 않는다.
- 추후에 클래스를 확장하게 될 수도 있으므로, 기본 생성자는 만들어 두는 것이 좋다.
-
생성자 오버로딩
- 초기값을 세팅해야 하는 데이터가 각각 다르다면, 생성자를 오버로딩한다.
-
this로 클래스 내의 다른 생성자 호출
- 생성자가 여러 개 선언되어 있을 때, this 키워드르 이용하여 자기 클래스 내의 다른 생성자를 호출할 수 있다.
public Book(String author) {
this.author = author;
}
public Book(String title, String author) {
this(author);
this.title = title;
}
package와 import
-
package는 관련 있는 클래스들의 집합이다.
-
패키지 선언은 클래스 파일의 맨 위에 한 번만 작성
-
패키지가 선언된 클래스는 패키지 이름으로 폴더가 만들어지고, 그 위치에 저장
.
(dot)을 기준으로 하위 폴더가 생성
package 패키지명;
-
import 선언 방법
-
사용하고 싶은 클래스의 경로를 적어준다.
-
package 선언문 다음, class 선언문 앞에 작성
-
import 선언은 여러 번할 수 있다.
- 같은 패키지에 있는 여러 개의 클래스를 사용해야 하는 경우,
*
를 이용하여 한 번에 import 할수있다.
- 같은 패키지에 있는 여러 개의 클래스를 사용해야 하는 경우,
-
import 사용하고자_하는_패키지명.클래스명;
-
import 사용하기
-
같은 패키지에 있는 여러 개의 클래스를 import 하는 경우
- 여러 번 import 를 하는 방법
- 묶어서 import 하는 방법
-
import com.Building;
import com.Student;
import com.*;
접근 제어자
- public
- 누구나 접근 가능한 필드와 멤버 메소드 선언
- default
- 같은 package 내의 클래스에서는 접근 가능한 필드와 멤버 메소드 선언
- private
- 다른 클래스에서는 절대 접근할 수 없는 필드와 멤버 메소드 선언
- getter 와 setter
- private 으로 선언된 필드를 접근하기 위한 public 메소드
- setter 정의 시 리턴 타입은 void, 메소드명은
set + 변수명
으로 사용 - getter 정의 시 리턴 타입은 변수의 데이터 타입, 메소드 명은
get + 변수명
으로 사용 - 객체 지향 언어의 특징 중 하나인 Encapsulation(캡슐화)을 구현하기 위한 방법
참조 데이터형 변수
- 기본 데이터형 변수는 변수가 만들어지는 공간에 바로 값이 저장된다.
- 참조 데이터형 변수는 변수가 만들어지는 공간과 객체가 만들어지는 공간이 다르다.
- 기본 데이터형 변수와 똑같은 공간에 변수가 만들어진다. ->
Stack
- 객체가 만들어지는 공간은 다른곳에 있다. ->
Heap
- 변수와 객체가 다른 공간에 만들어지기 때문에 객체는
참조
주소값을 가지고 있고, 변수는 참조 주소값을 이용하여 객체를 찾아간다.
- 기본 데이터형 변수와 똑같은 공간에 변수가 만들어진다. ->
static
-
객체를 생성하지 않고 클래스의 필드와 멤버 메소드를 호출하는 방법
-
static 키워드가 붙은 필드나 메소드는 클래스 이름을 구분자로 사용
- 프로그램 내에서 사용하는 상수는 final static 으로 선언하여 사용
- 프로그램 내에서 자주 사용되는 메소드는 static으로 선언하여 사용하는 것을 권장
-
static 키워드를 통해 생성된 정적 멤버들은 Heap 영역이 아닌 Static 영역에 할당되어 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점을 가짐
-
하지만 Garbage Collector의 관리 영역 밖에 존재하기에 static영역에 있는 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재하게 됨
-
main에 static을 사용하는 이유도 main함수가 메모리에 미리 올라가있어야 시작점인
main()
메소드를 호출할수있기때문에 static을 붙임
Author And Source
이 문제에 관하여([TIL] Java - 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwonsc/TIL-Java-클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)