Lumpy Space Princess - Adventure Time
공부/Java

#06. 클래스 / 객체 / 패키지 / 메서드

yaebb_82 2022. 1. 27.

반응형

 

 

1. 객체 지향 프로그래밍

*객체(Object)란?

: 구체적이고, 추상적인 데이터 단위

 

*객체 지향 프로그래밍(OOP, Object Oriented Programming)이란?

: 객체를 기반으로 하는 프로그래밍 (반대 개념: 절차 프로그래밍 - ex. C언어)

 

 

 

2. 클래스

*클래스(Class)란?

: 객체에 대한 속성기능을 코드로 구현한 것

 

1) 객체의 속성 : 객체의 특성 / 속성 / 멤버 변수 (Property, Attribute, Member Variable)

2) 객체의 기능 : 객체의 기능들을 메서드로 구현 (Method, Member Function)

 

ex. 학생 클래스

    1) 속성 : 학번, 학년, 이름, 등등...

    2) 기능 : 수강신청, 수업듣기, 시험보기, 등등...

 

 

 

<클래스 정의 형식>

(접근 제어자) class 클래스 이름 {
        멤버 변수;
        메서드;
}
  • class 이름은 대부분 대문자로 시작
  • 1개의 Java 파일에 1개의 class 두는 것이 원칙
  • 여러개의 class가 있는 경우 public class는 1개
  • public class와 Java파일의 이름은 동일
  • Java의 모든 코드는 class 내부에 위치 (외부에 위치할 경우 : package, import ... 사용)

 

 

*클래스의 기능

: 메서드로 구현(= 멤버 함수)

: 객체가 수행하는 기능 (= 멤버 함수)을 구현

 

 

*클래스 생성하기

: 클래스를 사용하기 위해서는 클래스를 생성해야 함

: new 예약어를 사용하여 생성

: ex) Student std = new Student( );

 

 

*클래스와 인스턴스

: 클래스(static 코드) → 생성(인스턴스 화) → 인스턴스(dynamic memory)

 

 

**인스턴스와 힙 메모리

 

package classpart;

public class Student {
	
    //멤버 변수
	int studentId;
	String studentName;
	int grade;
	String address;
	
    //생성자 오버로딩 (생성자를 두 개 이상 구현하는 경우)
	public Student() {}
	
	public Student(int id, String name) {
		studentId = id;
		studentName = name;
	}
	
	public void showStudentInfo() {
		System.out.println(address + "에 거주하는 " + studentId + "번인 "+ studentName);
	}
	
	public String getStudentName() {
		return studentName;
	}
	
	public void setStudentName(String name) {
		studentName = name;
	}
}
  • 멤버 변수 : 메서드 밖에서 선언된 변수(선언 위치: 클래스 영역) / Property, Attribute 라고도 표현한다.
  • 생성자 : 인스턴스 초기화 할 때의 명령어 집합 / 생성자의 이름과 클래스의 이름은 동일해야 한다. / 메소드X, 상속되지X, 리턴값X
  • 기본(default) 생성자 : 하나의 클래스에는 반드시 적어도 하나 이상의 생성자 존재 / 매개변수X, 구현부X
  • 매개변수가 있는 생성자를 하나라도 만들게 되면 이때는 기본 생성자를 지원되지 않는다.

 

package classpart;

public class StudnetTest {

	public static void main(String[] args) {
		
		Student studentLee = new Student(100, "이순신");
		studentLee.address = "경기도 남양주시 다산동";
		
		Student studentKim = new Student(); 
		studentKim.studentName = "김유신";
		studentKim.studentId = 101;
		studentKim.address = "서울특별시 은평구 신사동";
		
		studentLee.showStudentInfo();
		studentKim.showStudentInfo();
		
		System.out.println(studentLee);
		System.out.println(studentKim);
	}
}
  • Student = 참조형 데이터 타입 / studentLee = 참조 변수
  • studentLee, studentKim = 지역 변수 (선언 위치: 메서드 또는 생성자 내부) = heap 메모리에 생성된 객체의 주소를 가리킨다.
  • System.out.println(studentLee); System.out.println(studentKim); 이렇게 해서 나온 값 = 참조 값

 

  • 클래스의 full name = 패키지의 이름까지 포함한 것 (패키지: classpart / 클래스: Student)
  • @ 다음으로 나와있는 숫자 = 16진수, 32bit짜리 주소 값

 

 

 

3. 패키지

*패키지(Package)란?

: 소스들의 묶음

: 클래스 구분 / 디렉토리로 구분 / 소스 파일 정리 / 소스 코드 계층 구조로 관리 (계층 구조를 잘 구성해야 관리와 유지보수가 수월)

 

 

 

4. 메서드

*메서드(Method)란?

: 함수의 일종으로, 객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수

 

*함수(Function)란?

: 하나의 기능을 수행하는 일련의 코드

: 중복되는 기능은 함수로 따로 구현하고, 호출하여 사용

 

 

 

<함수 정의 형식>

Ex.)
①int ②multiple(③ int num1, int num2) {
      int result;
      result = num1 * num2;
      ④ return result;
}
  1. 함수 반환형 : 반환하는 값의 자료형을 나타낸다. (만약 반환 값이 없다면 void 라고 쓴다.)
  2. 함수 이름 : 함수의 기능과 관련하여 이름을 짓는다.
  3. 매개변수 : 함수 수행을 위해 필요한 변수들의 자료형과 이름을 써준다.
  4. return : 함수 수행 결과를 반환하기 위해 필요한 예약어 이다.

 

 

 

*함수를 사용하는 이유?

: 코드를 좀 더 효율적으로 구현하기 위해서 기능을 따로 분리하여 구현하고, 호출해서 사용하면 된다.

: 함수의 이름에 맞게 하나의 기능을 구현하는 것이 가장 적절하다.

반응형

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

#05. 반복문  (0) 2022.01.25
#04. 조건문  (0) 2022.01.25
#03. 항과 연산자  (0) 2022.01.24
#02. 진수/변수/상수 이해하기  (0) 2022.01.07
#01. Java 시작하기  (0) 2022.01.07

댓글