- private
private int r;
책에서 주로 '정보의 은닉화'라고 부른다. public과 정반대인 의미
외부에서 다이렉트로 변수에 접근을 못하도록
-> 메소드를 통해 일명 우회도로를 만듦
public void set(int r)
// set 혹은 setData 가능
//앞에 public을 해줘야 연결 가능. 값 바꿀 수 있도록
- this
private int r;
public void set(int r)
r = r; //이라고 하면 오류! r이 다 똑같이 인식되므로
--> this.r = r; //해줘야 함.
this는 클래스 자기 자신을 지칭함. 변수가 같아서 혼란일 때 활용(주로 우회도로 시 사용)
- static
'new'를 사용하지 않아도 자동으로 메모리 할당된다.
객체가 1000개여도 메모리 공간은 1개만 생성.
public static int a = 5; public static void print()
=> class변수 => class메소드
로딩되는 즉시 메모리 할당 ('new'필요x)
[클래스이름.객체] 통해 접근
private int b = 10; public void write()
=> instance변수 =>instance메소드
'new'를 통해 메모리 할당 받아야 함
클래스 메소드에서는 접근 불가능 (=호출 가능)
클래스 변수 혹은 클래스 메소드는 그 자체로 실행이 되지만 앞에 클래스이름 붙여주기
a -> 클래스명.a
print(); -> 클래스명.print();
- 메소드 중복 정의 overloading (overload)
같은 클래스 상에서 비슷한 역할인 메소드들이 이름을 통일시켜줌
-> 대신 괄호의 인수 갯수 혹은 특히 자료형을 다르게 입력하면 다른 메소드로 인식함
public void print()
public void print(int a)
public void print(double l)
다 같은 print메소드여도 다름!
public RectA(int w, int h) {
this.w = w;
this.h = h;
}
--> 클래스 내에서 오버로딩 생성
- 생성자
목적: 1. 객체 생성 2.변수 초기화
메모리 할당을 받을 때 사용을 하며 class의 이름과 같다
리턴값이 없으므로 property(void, int~타입) 필요가 없다
중복정의(overloading) 가능하며
생성자 안에서 다른 생성자 호출할 수 있지만, 메소드 내 선두에서만 가능
public 클래스명() { //항상 생략되어있는 것
public static void main(String[] args) {
RectA oj1 = new RectA(); //기본생성자 호출
oj1.set(10,20); //초기화
==> 오버로딩은 위와 달리 한번에 초기화 같이 가능
RectA oj2 = new RectA(50,60); //오버로딩
- 상수
변수와 반대되는 개념
final int D;
--> 항상 대문자. 만드는 순간 초기화해줘야 함
'개발 교육 TIL > back-end' 카테고리의 다른 글
[Java] 상속, override, 오버로딩, object, String클래스-메소드 (0) | 2022.01.04 |
---|---|
[Java] call by value/reference, 상속, super (0) | 2022.01.03 |
[Java] SubClass, Class (0) | 2021.12.29 |
[Java] Selection Sort, Bubble Sort, 주민번호, 배열의 배열 (0) | 2021.12.28 |
[Java] 만년달력, Selection Sort, 확장 for문, Random (0) | 2021.12.27 |