일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 주민번호마스킹
- class파일바로보기
- java
- Python
- CentOS
- 6kyu
- https
- 남산타워뷰
- 파이썬
- 시즌1
- Codewars
- 이것이리눅스다
- 오류
- 서울복층에어비앤비
- SQL
- 사용자변경
- JavaScript
- 서울에어비앤비
- 멀티쓰레드프로그래밍
- 자바기초스터디
- Oralce
- 8kyu
- Eclipse
- 이클립스
- 중첩쿼리
- VMware
- monthPicker
- CentOS8
- 7kyu
- Linux
- Today
- Total
보통사람
[Study-5주차] 클래스 본문
-
목표
-
자바의 Class에 대해 학습하세요.
-
-
학습할 것 (필수)
-
클래스 정의하는 방법
-
객체 만드는 방법 (new 키워드 이해하기)
-
메소드 정의하는 방법
-
생성자 정의하는 방법
-
this 키워드 이해하기
-
-
과제 (Optional)
-
int 값을 가지고 있는 이진트리를 나타내는 Node라는 클래스를 정의하세요.
-
int value, Node left, right를 가지고 있어야 합니다.
-
BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.
-
DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.
-
1. 클래스(Class)
-
객체를 정의한 것으로 객체의 설계도, 객체를 생성하기 위한 틀이라고 생각하면 됨
-
사용 용도는 객체를 생성하는데 사용됨 (클래스 ≠ 객체)
-
클래스를 통해서 객체를 만드는 이유는 설계도를 통해서 제품을 만드는 이유와 같음 고민 없이 설계도대로만 만들면 되기 때문에
-
대문자로 시작하며 변수(속성)와 메소드(기능)로 구성되어 있고 'public class'가 있는 경우 소스 파일의 이름과 반드시 같아야 함
-
클래스 정의하는 방법
class 클래스명 {
}
-
소스파일(*. java)과 다르게 클래스 파일(*. class)은 클래스마다 만들어짐
package com.study.java.week5;
public class HelloClass {}
class HelloClass2 {}
class HelloClass3 {}
-
클래스 구조
package com.study.java.week5;
public class TestClass {
public String myName; // instance 변수
public static String className; // static 변수(=클래스 변수, 공유 변수)
public static void printSatic() { // static 메소드
System.out.println("static 메소드 입니다.");
}
public void print() { // instance 메소드
String localName = "인스턴스 메소드"; // 지역 변수
System.out.println(localName +"입니다.");
}
public static void main(String[] args) {
TestClass.printSatic();
System.out.println(TestClass.className);
}
}
2. 객체(Object)와 인스턴스(Instance)
- 객체와 인스턴스는 같은 의미이지만 객체가 더 포괄적인 의미를 가짐 ( 인스턴스 ⊂ 객체 )
-
인스턴스화 (Instantiate) : 클래스로부터 객체를 만드는 과정
-
인스턴스 : 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함
-
인스턴스는 참조변수를 통해서만 다룰 수 있으며 참조 변수의 타입은 인스턴스의 타입과 일치해야 함
예) TestClass t = new TestClass();
t는 인스턴스이다. (X)
t는 객체이다. (O)
t는 TestClass의 객체이다. (X)
t는 TestClass의 인스턴스이다. (O)
-
인스턴스 생성 과정
-
연산자 new에 의해 TV클래스의 인스턴스가 메모리에 생성됨
-
대입 연산자(=)에 의해서 생성된 객체의 주소 값이 tv 참조 변수에 저장됨
-
참조 변수 tv가 TV 인스턴스를 '가리키고 있다' 또는 '참조하고 있다'라고 표현함
-
참조 변수는 하나의 주소 값만 저장될 수 있음
-
하나의 인스턴스를 여러개의 참조 변수가 참조(O)
-
여러 인스턴스를 하나의 참조변수가 참조(X)
-
-
3. 메소드(Method)
-
특정 작업을 수행하는 명령문의 집합을 의미함
-
메소드를 이용하면 코드 재사용을 할 수 있으며 중복된 코드의 제거도 가능함
-
메소드를 정의하는 방법
-
매개변수는 여러개가 될 수 있지만 반환값은 하나의 값만 허용됨
-
모든 메소드에는 return문은 반드시 있어야 하며 반환타입이 void인 경우에는 생략해도 됨(컴파일러가 자동 추가함)
-
접급제어자 반환타입 메소드 이름 (타입 변수명, ...) { // 선언부(Method Header)
// 구현부(Method Body)
}
public void print(String str) {
System.out.println(str);
}
public String print(String str) {
return str;
}
4. 생성자(Constructor)
-
인스턴스가 생성될 때 호출됨
-
인스턴스 변수들을 초기화 작업 또는 생성시 실행되어야 할 작업을 수행함
-
클래스마다 생성자가 있으며 따로 추가하지 않아도 매개변수가 없는 기본생성자를 컴파일러가 추가해줌
-
생성자의 조건
-
클래스 이름과 생성자 이름이 동일해야 함
-
반환값이 없음
-
접근제어자 생성자명 () {
}
package com.study.java.week5;
public class TestClass {
public String myName; // instance 변수
public TestClass() { // 기본 생성자 : 없으면 컴파일러가 자동 추가
}
public TestClass(String myName) { // 매개변수가 있는 생성자
this.myName = myName;
}
}
5. this(), this
-
this
-
인스턴스 자신을 가리키는 참조변수로 인스턴스의 주소가 저장되어 있음
-
모든 인스턴스 메소드에 지역변수로 숨겨진 채 존재함
-
-
this(), this(매개변수)
-
생성자를 의미함
-
같은 클래스의 다른 생성자를 호출 할 때 사용하며 반드시 첫줄에 나와야 함
-
※ 참조
Java의 정석
'Study' 카테고리의 다른 글
[Study-7주차] 패키지 (0) | 2020.12.29 |
---|---|
[Study-6주차] 상속 (0) | 2020.12.22 |
[Study-4주차] 제어문 (0) | 2020.12.07 |
[Study-3주차] 연산자 (0) | 2020.11.28 |
[Study-2주차] 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.21 |