public와 private
데이터를 안전하게 관리하기 위한 것
package com.green.kdt;
//Modifiers 클래스에 접근하면 퍼블릭이므로 내부 변수에 접근가능
public class Modifiers {
//멤버 필드
int a;
protected int b;
int c;//생략의 경우 package
private int d;
//메서드
void disp() {
d=40;
}
//생성자
}
package com.green.kdt;
import com.green.nowon.Nowon;
public class ModifierTest {
public static void main(String[] args) {
//메모리 공간할당--> 객체를 만든다
Modifiers obj= new Modifiers();
//Modifiers 클래스에 접근해서 힙메모리에 할당
//new 키워드 다음에 생성자 호출해서 새로운 객체를 만들어서 이어준다는뜻
//Modifiers 참조변수 obj를 여기에 새로 생성한 객체에 이어주는것
//객체를 만들면 인스턴스 변수(필드)공간이 메모리에 공간할당 되는데
//외부(다른 클래스)에서 그 객체 변수 접근할 때 제한을 거는 접근 제한자
obj.a=10;
obj.b=20;//객체는 obj가 가리키는 것이니객체는 obj라고 보심 대고
obj.c=30;//obj에 있는 변수 a랑 b랑 c를 값을 매기는게 접근이다.
//obj.d=40;//private
//private제한은 동일클래스까지 제한
Nowon nowon=new Nowon();
nowon.x=100;
//nowon.m=100; private
//nowon.y=200; protected : 동일 package가 아니므로 접근불가
// protected는 다른 package라면 상속인 경우 접근가능
//nowon.z=300; package : 동일 package가 아니므로 접근불가
}
}
package com.green.nowon;
public class Nowon {
public int x;
protected int y;
int z;
private int m;
final int a = 10; // 파이널은 선언과 동시에 초기값을 꼭 설정해줘야한다.
//초기값을 수정할 수 없기때문이다.
final static double PI=3.141592;
//final static + 상수
//상수 : 대문자로 조합해서 만들고 합성어는 '_'사용
void setA(int a) {
//this.a=a; final이란 수정불가 --> 대입이 안된다는 말
}
}
package com.green.kdt;
//package가 다를때 import해줘야 사용가능
import com.green.nowon.Nowon;
//extends 확장시킨다
public class NowonSub extends Nowon{
void disp() {
x=10;
y=20;//package+상속인경우까지 가능
//z=30;//동일package까지 가능 지금은 안됌
//m=40;private
}
}