✍JAVA STUDY 3주차-1

min·2021년 10월 26일
0

✅JAVA STUDY 3주차-1

✔ 클래스 정의하는 방법
- 객체 만드는 방법 (new 키워드 이해하기)
✔ 메소드 정의하는 방법
✔ 생성자 정의하는 방법
✔ this 키워드 이해하기

클래스 정의하는 방법

자바 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

  • 객체를 기반으로 하는 프로그램으로 '어떤 대상(객체)을 가지고 프로그래밍한다'는 개념

클래스

  • 객체의 속성과 기능을 코드로 구현한 것
  • 객체를 클래스로 구현하는 것을 '클래스를 정의한다.'라고 한다.

클래스를 정의하려면

  • 클래스 이름과 클래스가 가지는 속성 또는 특성이 필요하다.
(접근제어자) class 클래스 이름 {
	멤버변수;
	메서드;
}
package home;

public class Person {
    int personId;
    private String personName;
    int age;
}   

접근제어자

  • 객체 지향 프로그램에서는 접근제어자를 사용하여 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다.
해당 클래스 안에서같은 패키지에서상속받은 클래스에서전체
publicOOOO
protectedOOOX
defaultOOXX
privateOXXX

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

클래스 자료형 변수를 선언하고 new 예약어로 생성자를 호출하여 대입하면 새로운 클래스가 생성된다.

클래스형 변수 이름 = new 생성자;

Person personkim = new Person();
//Person 클래스 자료형으로 personKim 변수를 선언하고 
//new Person();으로 Person 클래스를 생성하여 personKim에 대입한다는 뜻
  • 클래스가 생성된다는 것은 실제 사용할 수 있도록 메모리 공간(힙 메모리)를 할당 받는다는 뜻이다.
  • 실제로 사용할 수 있도록 생성된 클래스를 '인스턴스'라고 한다.
**여러 상태의 클래스가 동시에 필요할 때는 클래스 앞에 new를 붙여 클래스의 복제본을 만들어서 
서로 다른 상태를 유지할 수 있다. 이 복제본을 인스턴스라고 한다.

**힙 메모리란
힙(heap)은 프로그램에서 사용하는 동적 메모리 공간을 말한다.
일반적으로 프로그램은 스택, 힙, 데이터 세 영역을 사용하는데, 객체가 생성될 때 사용하는 공간이 힙이다.

메서드 정의하는 방법

  • 메서드는 함수의 한 종류

함수

  • 하나의 기능을 수행하는 일련의 코드
  • 어떤 기능을 수행하도록 미리 구현해 놓고 필요할 때마다 호출하여 사용 가능

함수 정의하기

int add(int num1, int num2) {
	int result;
    result = num1+num2;
    return result;

메서드

자바에는 클래스 내부에서 사용하는 멤버 함수를 '메서드'라 하며 멤버 변수를 사용하여 클래스의 기능을 구현한다. 즉 함수에 객체 지향 개념이 포함된 용어로 이해할 수 있다.

public class Person {
    int personId;
    private String personName;
    int age;

//사람 이름을 반환하는 메서드    
  public String getPersonName() {
      return personName;

//사람 이름을 부여하는 메서드
  public void setPersonName(String personName) {
      this.personName = personName;
  }
}   

private으로 선언한 personName 변수를 외부 코드에서 사용하기 위해서는 public 메서드가 필요하지만 제공될 수 없다면 get(), set() 메서드를 사용할 수 있다.

생성자 정의하는 방법

생성자

  • 클래스를 처음 만들 때 멤버 변수나 상수를 초기화 한다.
  • 생성자 이름은 클래스 이름과 같아야 하며 생성자는 반환값이 없다.

디폴트 생성자

  • 매개변수도 없고 구현 코드도 없다.
public class Student {
	String name;
    int age;
    int grade;
   
    public Student(){} 
    //자바 컴파일러가 기본적으로 제공하는 디폴트 생성자
}

생성자 만들기

  • 인스턴스가 생성됨과 동시에 멤버변수의 값을 지정하고 인스턴스를 초기화하기 위해 생성자를 직접 구현하기도 한다.
public class Student {
	String name;
    int age;
    int grade;
   
    public Student(String pname){
    	name = pname;
    } 
    //사람 이름을 매개변수로 입력받아서 Student클래스를 생성하는 생성자
}

오버로드

  • 메서드 이름이 같고 매개변수만 다른 경우를 '오버로드'라고 한다.
  • 클래스에 생성자가 두 개 이상 제공되는 경우를 '생성자 오버로드'라고 한다.
  • 클래스에 생성자를 여러 개 제공할 때 원하는 생성자를 선택해 사용할 수 있으며 경우에 따라서는 일부러 디폴트 생성자를 제공하지 않기도 한다.

this 키워드 이해하기

자신의 메모리를 가리키는 this

  • this는 생성된 인스턴스 스스로를 가리키는 예약어이지만 다른 역할로도 this를 사용 가능하다.

생성자에서 다른 생성자를 호출하는 this

  • 클래스에 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 종종 있다. 이때 this를 사용할 수 있다.

자신의 주소를 반환하는 this
-this를 사용하여 생성된 클래스 자신의 주소 값을 반환할 수 있다.

  • 인스턴스 주소 값을 반환할 때는 this를 사용하고 반환형은 클래스 자료형을 사용한다.

0개의 댓글