변수의 이름이나 메서드 이름 앞에 "접근 한정자"를 지정한다.
public : 모든 곳에서 접근 가능하다.
일반적으로 모든 메서드 앞에 명시한다.
private : 클래스 안에서 사용가능하고, 객체를 통해 접근할 수 없다.
일반적으로 모든 멤버변수 앞에 명시한다.
protected : 현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는 클래스와
하위 클래스에서 접근 가능하다. 잘 사용하지 않는다.
default : 접근 한정자를 명시하지 않은 경우 발생한다. 현재 클래스 내의 다른 자원이나
동일 패키지 내의 다른 클래스에서 접근 가능하다. 잘 사용하지 않는다.
멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근
하는 방법이 사라지므로, 메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 한다.
getter, setter 는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서들을
의미하는 용어이다.
getter : 은닉된 멤버 변수의 값을 리턴하기 위한 메서드
setter : 파라미터로 전달된 값을 멤버 변수에 복사하기 위한 메서드
메서드 작성의 예
멤버변수 이름 getter setter
String userName String getUserName ( ) void setUserName( String param )
int userAge int getUserAge ( ) void setUserAge ( int param )
-> "get", "set" 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시
-> getter 는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
-> setter는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시
public class Article {
private int num;
private String title;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
public : 객체 생성이 가능하다.
서로 다른 소스코드에 정의된 클래스끼리도 객체 생성이 가능하다.
private : 클래스에 적용할 수 없다.
protected : 클래스에 적용할 수 없다.
default : 동일한 소스코드에 정의된 클래스끼리만 객체로 생성가능하다.
(지금까지 예제 형태)
class User{
public String name = "자바학생";
// private가 적용된 항목은 객체를 통하여 접근할 수 없다. (은닉성)
private int age = 20;
}
public class Main01 {
public static void main(String[] args) {
User user = new User();
// public 이므로 접근 가능
System.out.println( user.name );
// pirvate 이므로 age는 접근 불가능
//System.out.println(user.age);
}
}
extends 키워드를 사용하여 부모 클래스의 이름을 명시한다.
public class 자식클래스 estends 부모클래스 {....}
package extendsobject;
public class CalcChild extends CalcParent {
public int times (int x, int y) {
return x * y;
}
public int divide ( int x, int y ) {
int result = 0;
if ( y != 0 ) {
result = x / y;
}
return result;
}
}
package extendsobject;
public class CalcParent {
public int plus ( int x, int y ) {
return x + y;
}
public int minus ( int x, int y) {
return x - y;
}
}