-
[Java 자바] 6. 클래스 ② 클래스 선언, 객체 생성Programming/Java 2022. 7. 31. 11:32반응형
6-3. 클래스 선언
[ 클래스 이름 작성 규칙 ]
번호 작성규칙 예 1 하나 이상의 문자로 이루어짐 Car, SportsCar 2 첫 글자는 대문자나 '$', '_'만 사용 가능
(소문자 가능하나 관례상 첫글자는 대문자)Car, 3Car(x) 3 '$', '_' 외의 특수문자 사용 불가능 $Car, _Car, @Car(x) 4 자바 예약어 사용불가능 int(x), for(x) ✨ 네이밍 표기법 종류
1. camelCase: 변수명, 함수명 작성시 사용
2. PascalCase: 클래스 이름 작성시 사용
3. snake_case: 주로 파이썬에서 사용, 자바에서는 상수 지정시 대문자로 SNAKE_CASE처럼 사용
4. kebab-case: HTML, CSS에서 속성명, 아이디명, 클래스명 작성시 주로 사용public class 클래스이름 { }
- 두 개 이상의 클래스가 선언된 소스파일을 컴파일하면 바이트 코드 파일은 클래스 선언 개수만큼 생성
(소스파일은 클래스 선언을 담고 있는 저장 단위로 클래스 자체가 아님)- 단, public 과 같은 접근 제한자는 소스파일 이름과 동일한 이름의 클래스 선언에만 사용 가능
(소스파일과 동일하지 않은 클래스에 붙이면 컴파일 에러 발생)6-4. 객체 생성과 클래스 변수
- new 연산자를 통해 클래스로부터 객체 생성 가능
- new 연산자를 통해 새로운 객체를 생성하면 스택 영역에 변수와 참조값, 힙 영역에 객체 고유의 메모리 영역이 생성됨
- 즉, 같은 클래스를 통해 똑같은 인스턴스를 생성했어도 힙 영역에 각각 고유의 참조값을 갖고 있기 때문에,
동등 연산자로 비교시에 false 값이 반환됨 (아래 예시 참고)// Person.java public class Person { String name = "Erin"; int age = 20; } // PersonTest.java public class PersonTest { public static void main(String[] args) { Person p1 = new Person(); System.out.println(p1.name); // Erin System.out.println(p1.age); // 20 Person p2 = new Person(); System.out.println(p1.name == p2.name); // true System.out.println(p1 == p2); // false } }
6-5. 클래스의 구성 멤버
1) 필드
- 클래스에 포함되는 객체 고유의 데이터, 정보를 저장하는 곳
- 변수와 유사하나 변수는 생성자와 메소드 내에서만 사용되고 실행 종료되면 자동 소멸되는 반면
필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 존재2) 생성자
- 클래스, 인스턴스를 생성하기 위한 호출 메소드로 생성자는 클래스명과 같음(리턴 타입은 없음)
ex. 클래스 Car의 생성자는 Car()
3) 메소드
- 클래스 안에 정의한 함수로 특정한 작업을 수행하기 위한 명령문의 집합
반응형'Programming > Java' 카테고리의 다른 글
[Java 자바] 6. 클래스 ④ this, static, final, static final (0) 2022.07.31 [Java 자바] 6. 클래스 ③ 필드, 생성자, 메소드 (0) 2022.07.31 [Java 자바] 6. 클래스 ① 객체지향 프로그래밍, 객체와 클래스 (0) 2022.07.30 [Java 자바] 5. 참조 타입 ② 배열, 배열 생성, 배열 길이, 다차원 배열, 향상된 for문 (0) 2022.07.30 [Java 자바] 5. 참조 타입 ① 데이터 타입 분류, 메모리 사용 영역, String (0) 2022.07.30