: 클래스를 생성할 때 사용하는 Person()
같은 함수
Person personLee = new Person();
Phone()
함수 생성Phone galaxy/iphone = new Phone();
public Phone(String model, String color, int price) {
...
}
: 객체지향 프로그램에서 메소드 이름이 같고 매개변수만 다른 경우
기존에 없던 새로운 메소드 정의
조건
int add(int x, int y, int z) {
return x+y+z;
}
long add(int a, int b, int c){
return a+b+c;
}
//컴파일 에러. 개수가 같음. 타입도 같음
int add(int x, int y, int z) {
int result = x + y + z;
return result;
}
long add(int a, int b, long c) {
long result = a + b + c;
return result;
}
int add(int a, int b) {
int result = a + b;
return result;
}
// 오버로딩 조건에 부합. 메소드 이름은 같지만 매개변수의 개수가 다름
: 클래스 내부의 변수나 메소드, 생성자에 대한 접근 권한을 지정할 수 있는 예약어
private
: 같은 클래스 내에서만 접근 가능
default(nothing)
: 같은 패키지 내에서만 접근 가능
protected
: 같은 패키지 내부 , 상속 관계 클래스에서 접근이 가능
public
: 접근 제한이 전혀 없음
- why 접근제어자?
- 객체지향 프로그래밍에선 객체들간의 관계에 따라서 접근 할 수 있는 것과 아닌 것, 권한을 구분할 필요가 생긴다.
- 클래스 내부에 선언된 데이터의 부적절한 사용으로부터 보호하고
- 캡슐화가 가능할 수 있도록 돕는 도구이다.
- 캡슐화(encapsulation) : 클래스 내부 변수와 메소드를 하나로 묶고 일부는 은닉한다.
get()
메소드set()
메소드public class Student {
int studentID;
private String studentName;
int grade;
String address;
//private 변수인 studentName의 값을 가져오는 메소드
public String getStudentName() {
return studentName;
}
//private 변수인 studentName에 접근해 값을 지정하는 메소드
public void setStudentName(String studentName) {
this.studentName = student2Name;
}
}
박은종, 『Do it! 자바 프로그래밍 입문』, 이지퍼블리싱(주)