[Java] 5. 자바 꼭 알아야 하는 문법 (3) + 객체 소개

2023. 9. 12. 00:13Java언어 공부

Import

 

어떤 패키지에 포함된 클래스를 사용하고 시픙면 그것의 완전 이름을 사용하거나 import문을 사용해야 함.

 

import packageName.ClassName;

 

위는 사용방법이다.

#include와 달리 일반 달리 일반 프로그래밍 문장이다( ;로 끝남 )

 

- import 문 없이 사용하는 경우

String, System.out 등은 java.lang 패키지에 포함되어 있고, 자동으로 import 된다.

 

동일한 패키지의 클래스를 다 사용하려면

클래스 이름 대신에 *을 써서 한 번만 import해도 된다.

(하지만 여러 패키지에서 동일한 클래스를 import 할 때 *을 쓰면 오류가 남)

 

=> 따로따로 쓰는 것이 바람직하다

 

-----------------------------------------------------------------------------------------------------

 

Module

자바 9부터 나온 개념으로, 패키지를 모두 묶어 관리할 수 있는 개념이다.

 

module, exports 등 10개의 키워드가 추가되었다.(제한적 키워드고 제한적 키워드의 개념은 아래에서 설명하겠음)

 

module-info.java라는 파일을 이용하여 정의한다.

 

모듈 개념을 사용하지 않으면 호환성을 위해 자동으로 unnamed module이라는 모듈을 만들어준다.

 

module Pyo_rang {
	exports 패키지이름;
    requires 모듈이름;
}

module Pyo_rang {
    exports pyo;
    exports pyo1;
    requires dus;
    requires transitive dus;
}

 

-----------------------------------------------------------------------------------------------------

 

상속

 

다형성 : 객체 지향에서 상태에 따라 행위를 할 경우 조건문을 사용하지 않는 것

 

상속이란, 객체 지향 언어에서는 기존 클래스를 이용하여 이를 보다 구체화한 새 클래스를 정의하는 것

 

기존 클래스를 새 클래스의 부모 클래스라 하고,

새 클라스는 기존 클래스의 자식 클래스라 함.

 

자식 클래스에서 함수를 재정의(오버라이딩)하거나 등 부모클래스를 사용할 때에는

extends 키워드를 사용함.

 

public class Tiger extends Cat{
	///...
}

 

+ 추가 내용)

 

equals() : 자바는 연산자 오버라이딩을 허용하지 않으므로,

원시 타입을 제외한 객체들은 '=='의 기능을 사용할 때, 이 함수를 사용한다.

 

 

-----------------------------------------------------------------------------------------------------

객체

객체는 상태를 가지고 있고, 특정 행위를 할 수 있다.

행위는 현재 상태에 따라 결과가 다르다.

 

어떤 것을 객체로 모델링하는게 좋을까?

- 학생이나 자동차 같은 실세계 사물을 모델링해야 하는 경우

- 복합타입의 데이터를 모델링 할 때 ( 문자열에서 특정 문자 위치 )

- 과거에 대한 기억이 필요하면 객체로 모델링 ( Ex. Scanner는 버퍼의 처리 위치를 기억한다)

 

한 종류의 객체는 여러 개 있을 수가 있으며, 한 객체를 여러 번 사용하기 때문에 식별자가 필요하다.

이는 식별자 역할을 변수가 함. 

 

비유를 하자면 클래스는 틀이고, 객체는 생성된 것이다.

 

멤버 변수와 메소드를 합쳐서 틀을 이용하여 정의하는 것을 캡슐화라고 하며,

접근 제어까지 추가해 프로그램의 강건을 높여주고 있다.

 

공장만 만들어 봤자 의미 없고 리모컨을 찍어내서 명령을 해야 리모컨이 쓸모가 있듯이,

클래스를 만들어서 객체를 생성하고 실행하게 메소드를 실행해야한다.

 

한 클래스에 동일 이름의 메소드를 여러 개 정의할 수 있다.

이를 다중 정의라 하며, 인자의 개수와 타입을 이용하여 구분한다.

 

-----------------------------------------------------------------------------------------------------

 

타입과 변수

 

변수 : 어떤 값을 저장하는 곳 (메모리에 저장됨)

타입 정보와 이름을 제공해야 하고, 타입 정보에 따라 필요한 공간의 크기가 다르다.

 

자바는 강건성을 중요시했기 때문에 타입에 대해서 엄격하다

C/C++에서는 초기화 하지 않으면 쓰레기 값이 나오지만, 자바는 오류가 난다.

 

-----------------------------------------------------------------------------------------------------

 

식별자

 

프로그래머가 직접 정의하는 이름을 식별자라고 한다.

컴파일러가 이해하고 있는 식별자는 키워드라고 한다.

 

규칙으로는,

 

1. 영문자, 숫자, 밑줄문자(_)와 dollar기호 ($)만을 사용할수 있다.

2. 중간에 공백 문자를 포함할 수 없다

3. public과 같은 자바 키워드는 사용할 수 없다.

4. 대소문자를 구분한다.

5. 키워드는 사용 불가능함

 

식별자의 종류에 따라 통일성 있게 정의하는 것이 바람직하다.

코딩할 때 쓰면 좋은 팁들이다.

 

낙타 표기법 : 소문자로 쓰되, 단어를 끊어서 중간에 대문자가 나오는 것 (ex. getStudent(), Car)

클래스 이름 : 대문자로 시작하는 낙타 표기법

변수나 메소드 이름 : 소문자로 시작하는 낙타 표기법

 

뱀 표기법 : 단어 사이에 언더바(_)를 사용하여 가독성을 주는 것 (ex. EMPLOYEE_RATE)

상수 이름 : 모두 대문자이며 뱀 표기법을 이용한다.

 

메소드 이름은 보통 동사+명사 꼴로 나타낸다.

 

배열이나 벡터 같은 복합 타입의 변수를 사용할 때는 -s를 붙여 복수라고 나타내기도 한다.

 

-----------------------------------------------------------------------------------------------------

 

자바 키워드

 

자바에는 키워드가 있는데  특별히 설명할 건 없고,

한 가지 짚고 넘어가야하는게 있다면,

제한적 키워드가 자바 9부터 생겼는데, 특정한 위치에서는 키워드로 쓰이지만,

아니면 평범하게 쓰일 수 있다.

(ex. var var = 9; )

'Java언어 공부' 카테고리의 다른 글

[Java] 7. 클래스  (0) 2023.09.18
[Java] 6. 객체 소개(2)  (0) 2023.09.15
[Java] 4. 자바 꼭 알아야 하는 문법 (2)  (1) 2023.09.09
[Java] 3. 자바 꼭 알아야 하는 문법  (0) 2023.09.05
[Java] 2. 자바 언어 소개  (0) 2023.09.03