#06. 클래스 / 객체 / 패키지 / 메서드
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;
}
- 함수 반환형 : 반환하는 값의 자료형을 나타낸다. (만약 반환 값이 없다면 void 라고 쓴다.)
- 함수 이름 : 함수의 기능과 관련하여 이름을 짓는다.
- 매개변수 : 함수 수행을 위해 필요한 변수들의 자료형과 이름을 써준다.
- 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 |
댓글