본문 바로가기

개발공부/JAVA

자바스터디 5주차 feat.백기선님 (클래스/객체/메소드/생성자/this)

클래스 정의하는 방법

- 자바는 클래스 라는 캡슐을 사용하여 객체를 표현.

- 클래스는 체를 생성하기 위한 설계도 또는 틀.

ex) 붕어빵 틀은 클래스, 찍혀져 나오는 붕어빵 자체는 객체(인스턴스)

<클래스 정의 방법>

접근지정자

public 클래스 내부, 외부 모두 호출가능
private 비공개(클래스 내부 멤버를 이용해서만 접근 가능)
protected 클래스 내부 메소드들 호출 가능, 다른 클래스 중 상속 받은 클래스만 호출 가능
생략(default) 동일한 패키지 내의 모든 클래스가 호출가능함
  default private protected public
같은 패키지 클래스 O X O O
다른 패키지 클래스 X X X O

생성자란?

- 클래스의 이름과 동일한 메소드

- 이 클래스의 객체가 생성될때만 호출

 

메소드란?

- 실행가능한 함수

- 객체의 행위를 구현

 

클래스 정의 예시

public class Person{ //클래스 정의
	
    public String name; // 멤버 변수 선언
    public int age;
    
    public Person(){ //기본 생성자
    }
    
    public Person(String n, int a){ //생성자
	name = n;
        age = a;
    }
    
    public String getName(){  //메소드
    	return name;
    }
    
}

  • 객체 만드는 방법 (new 키워드 이해하기)

 


메소드 정의하는 방법

메소드란?

- 실행가능한 함수

객체의 행위를 구현

<메소드 정의 방법>

메소드 정의 예시

public class Person{ //클래스 정의
	
    public String name; // 멤버 변수 선언
    public int age;
    
    public Person(){ //기본 생성자
    }
    
    public Person(String n, int a){ //생성자
	name = n;
        age = a;
    }
    
    public String getName(){  //메소드
    	return name;
    }
    
}

 


생성자 정의 하는 방법

 

생성자란?

- 객체가 생성될 때 초기화를 위해 실행되는 메소드(자동으로 호출)

- 생성자의 이름은 클래스의 이름과 동일하다

- new를 통해 객체를 생성할때만 호출된다

- 리턴타입이 없다.

- 선언된 생성자가 없다면 자동으로 생성되는 기본생성자/ 디폴트 생성자를 불러와서 선언한다.

 

public class Person{ //클래스 정의
	
    public String name; // 멤버 변수 선언
    public int age;
    
    public Person(){ //기본 생성자
    }
    
    public Person(String n, int a){ //생성자
	name = n;
        age = a;
    }
    
    public String getName(){  //메소드
    	return name;
    }
    
}

 

new 키워드를 사용하여 객체 생성하기

 

String str = new String("자바");

의 예시를 보면,

 

1. String 타입 참조 변수를 선언

2. 이름이 str이라는 변수를 메모리 Stack영역에 생성한 후,

3. new라는 생성자를 이용해 String 객체를 생성

4.( )안에 넣어준 문자열 "자바"라는 값을 메모리 Heap영역에 저장한 후,

5. 그 저장공간의 주소 값을 Stack영역에 생성된 이름이 str이라는 공간에 저장

 

Scanner scanner = new Scanner();

new라는 생성자를 사용해 Scanner 참조 변수를 생성.


this 키워드 이해하기

- 객체 자신을 지칭

- 현재 객체에 대한 레퍼런스

 

this 사용 예시

public class Person{
	public int id;
    
    public Person(int id){
    	this.id = id; //id = id라고 쓸수 없음  둘다 인자로 정의된 id를 가리킨다.
    }
    
    public void set(int x){
    	this.id = x; 
    }
}

 

  • int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요.
  • int value, Node left, right를 가지고 있어야 합니다.
  • BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.
  • DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.

github.com/whiteship/live-study/issues/5

 

5주차 과제: 클래스 · Issue #5 · whiteship/live-study

목표 자바의 Class에 대해 학습하세요. 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 마감일시

github.com

참고문헌 : 명품 자바프로그래밍 (황기태/김효수 지음) 
https://colossus-java-practice.tistory.com/8