객체의 속성이나 기능 등을 정의해놓은 것
동일한 행위(기능)을 위해 비슷한 속성의 필드, 함수의 모임이다.
객체의 타입을 나타내기도 한다.
접근제어자 클래스 클래스명{
필드
생성자
메서드
}
접근제어자 : 외부에서의 직접적인 접근을 막기 위해 사용한다. 외부에서의 객체의 직접 접근을 private으로 막고 public 메서드를 생성하여 간접적으로 접근하도록 한다. 4개의 접근 제어자가 있다.
public : 객체를 사용하는 프로그램 어디서든 접근이 가능하다.
private : 외부에서 접근할 수 없다.
default : 같은 패키지에 속하는 멤버만 접근 가능하다. 자바의 기본값으로 별도로 지정하지 않으면 default 접근 제어를 가진다.
protected : 부모 클래스에 대해서는 public 멤버처럼 취급되며 외부에서는 private 속성을 가진다.
public class MyClass{
private String myName;
private int myNumber;
public MyClass(String myName, int myNumber){
this.myName = myName;
this.myNumber = myNumber;
}
public getMyName(){
return myName;
}
...
}
new 연산자와 생성자를 통해 객체를 만든다.
객체는 힙 영역에 생성된다.
MyClass me = new MyClass("JaeYeon",010);
new 키워드를 사용하면 힙 메모리 영역에 할당된다.
접근자 리턴타입 함수명(파라미터){
return 결과 값;
}
public int plus(int a, int b){
return a + b;
}
네이밍 규칙 : 클래스나 함수를 작성할 때 이름을 짓는 규칙이 있다. 다음은 필수적인 규칙이다.
1. 대소문자는 구분 된다.
2. 예약어는 사용할 수 없다.
3. 숫자로 시작하면 안 된다.
4. 특수문자는 _와 $만 사용 가능하다.
또한 필수는 아니지만 일반적으로 사용하는 규칙도 있다.
1. 클래스나 인스턴스는 대문자로 시작하고 메서드와 필드이름은 소문자로 시작한다.
2. 단어 사이는 대문자로 구분한다. (카멜 표기법)
3. 상수 필드는 대문자로 작성하고 단어 사이에 _를 이용해 구분한다.
4. 통용되는 줄임말을 제외하고는 약어를 지양한다.
5. 클래스나 인스턴스는 명사, 메서드는 동사를 많이 사용한다.
클래스 이름과 같은 이름을 가지며 리턴 타입은 존재하지 않는다.
new 연산자와 함께 사용되어 객체를 생성한다.
public class MyClass{
private String myName;
private int myNumber;
public MyClass(String myName, int myNumber){
this.myName = myName;
this.myNumber = myNumber;
}
}
해당 클래스를 기반으로 생성된 인스턴스를 가리키는 참조 즉 객체 스스로, 자기 자신을 의미한다.
객체 내부에서 필드에 접근하기 위해 사용한다.
다른 생성자를 호출할 때도 사용할 수 있다. 이때 생성자 중 맨 위의 생성자에서만 사용 가능하다.
public class MyClass{
private String myName;
private int myNumber;
public MyClass(){
this("no-name",0);
}
public MyClass(String myName, int myNumber){
this.myName = myName;
this.myNumber = myNumber;
}
public getMyName(){
return myName;
}
...
}
인스턴스 : 추상화 개념 또는 클래스 객체 등을 실제 구현한 것
인스턴스화 : 인스턴스를 만드는 것