02.17(수) ~ 02.19(금)
[ method ]
- 수학의 함수와 비슷하며 호출을 통해 사용
- 타 언어에서 함수와 동일한 기능
- 호출 시 전달 값이 있거나 없을 수 있으며, 내부에 작성된 연산을 수행 후 결괏값 또한 있거나 없을 수 있다.
public void printMsg() { // 접근제어지시자 반환형 메소드명 (매개변수)
// 실행 코드
}
[ 접근제어 지시자 ( 접근 제한자 ) ]
구분 | 해당 클래스 내부 | 같은 패키지 | 후손 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | |
default | O | O | ||
private | O |
public > protected > default > private
[ 반환형 ]
구분 | 설명 |
void | 반환 값이 없을 경우 |
기본 자료형 | 반환 값이 8가지 기본 자료형일 경우 |
참조 자료형 | 반환값이 참조형 자료형일 경우( String, 사용자 정의 ) |
배열 | 기본형 배열, 참조형 배열 모두 가능 |
[ 매개변수 ]
구분 | 설명 |
() | 매개변수가 없는 것을 의미함 |
기본 자료형 | 값을 복사하여 전달 메서드에서 해당 값을 변경해도 원래 값은 변경 X call by value |
참조 자료형 배열 |
데이터의 주소값이 전달 메서드에서 해당 값을 변경하면 원래 값도 같이 변경 call by reference |
[ Overloading ]
- 한 Class 내에서 매개변수(파라미터) 선언부가 다르고, 이름이 같은 메서드를 여러 개 정의하는 것
조건 : 메서드의 이름이 같아야 함, 매개변수 선언부가 달라야 한다. ex) 매개변수 타입, 개수, 순서
주의 : 매개변수에서 사용하는 변수의 이름은 상관 X + return 타입은 Overloading에 영향 X / 같거나 다르거나 무관
public class Sum {
public int sum(int num1, int num2) {
return num1 + num2;
}
// 메서드 이름은 동일/ 매개변수의 수가 3개이므로 Overloading O
public int sum(int num1, int num2, int num3) {
return num1 + num2 + num3;
}
// 매개변수가 정수형 2개로 동일하면, 매개변수의 이름이 다르더라도 Overloading X
public int sum(int su1, int su2) {
return su1 + su2;
}
// 리턴 타입이 달라져도 영향을 줄 수 없으므로 Overloading X
public void sum(int num1, int num2) {
}
}
[ 객체지향 프로그래밍 ]
- 현실세계의 객체(사물, 개념)를 클래스(Class)와 객체(object)의 개념으로 컴퓨터에서 구현
[ 객체 ]
- 사전적 의미 : 실체 하는 모든 사물
- 객체지향 : new 연산자를 통해 Class의 설계대로 데이터를 메모리에 할당한 결과물(instance)
[ 클래스 ]
- 객체를 정의해 놓은 것, 객체의 설계도, 틀
- 사물이나 개념의 공통 요소(속성, 기능)를 용도에 맞게 추상화
[ 추상화 ]
- 사전적 의미 : 구체적 사물들의 공통된 특징
- 프로그램에서 필요한 기능/속성을 추출하고, 불필요한 것을 제거하는 과정
1. 추상화 - 속성과 기능 정의
2. Class 작성
2-1. 속성 : 저장할 변수(멤버 변수)의 데이터 타입과 이름을 정의
2-2. 기능 : 메서드로 정의하여 구현
[ 정보 은닉 ]
- 정보를 숨기는 것
- 의도치 않은 외부 접근에 대한 오류를 방지하기 위함
- 만들어진 객체가 개발자의 의도대로 사용될 수 있도록 하기 위함
- 클래스의 멤버 변수는 일반적으로 private 영역에 저장
※ 변수의 접근제어 지시자를 private로 설정하여 클래스 외부에서 직접 접근을 제한
[ 생성자 ]
- Class 작성 시 생성자를 작성하지 않는 경우 JVM이 기본 생성자를 자동으로 생성함
- 매개변수가 있는 생성자를 작성하는 경우 JVM이 기본 생성자를 자동으로 생성하지 않음
- method overloading을 이용하여 여러 개의 생성자 사용 가능
- 일반적으로 기본 생성자, 모든 멤버 변수를 초기화하는 매개변수가 있는 생성자를 작성하고,
필요에 따라서 추가로 생성자 작성
[ 소멸자 ]
- 생성자와 반대로 객체가 소멸할 때 자동으로 호출되는 메서드
- GC(Garbage Collector)가 메모리를 자동으로 정리하기 때문에 소멸자가 필요 X
[ 객체(Instance)의 할당 ]
- new 생성자(); 를 사용하여 객체를 생성하면 heap 메모리 공간에 서로 다른 자료형의 데이터가
연속으로 나열 할당된 객체 공간이 만들어지는데 이를 인스턴스(Instance)라고 함
TV tv = new TV(); // 객체 TV형 class 변수 tv를 선언하고, 생성자를 사용하여 객체를 인스턴스화
[ 변수의 종류 ]
1. 지역변수
- 해당 지역(메서드)에서만 사용 가능
2. 전역 변수(멤버 변수, 인스턴스 변수)
- 해당 Class 내부에서만 사용 가능
- 객체 생성 시 해당 객체에서만 사용 가능
3. 정적 변수(Class 변수)
- Class와 관계없이 사용 가능한 변수
- static 키워드를 이용해서 선언
- 특별한 케이스를 제외하고는 사용하지 않음
※ 지역변수는 반드시 직접 초기화해야 하지만, 전역 변수 + 정적 변수는 선언만 해도
기본값으로 초기화됨 ( 배열 선언 시 초기화 값과 동일)
[ 객체지향 3대 원칙 ]
- 캡슐화
- 추상화를 통해 정의된 데이터들과 기능을 하나로 묶어 관리하는 기법
- Class의 가장 중요한 목적인 데이터의 접근 제한을 원칙으로 하여, Class 외부에서
데이터의 직접 접근을 막고, 대신 데이터를 처리하는 메서드들을 Class 내부에서 작성하여
데이터에 접근
- 접근제어 지시자를 통한 데이터 접근 제한
- 데이터 처리 메서드 ( getter, setter ) / public
public class TV {
private int inch;
private boolean poewr;
private int channel;
private int volume;
/*
* getter method - 접근제어지시자 : public, 리턴 타입 : 멤버변수 자료형
* method이름은 get변수명(카멜표기), 현재 변수의 값을 리턴
*/
public boolean getPower() {
return power;
}
}