day16

상은👸·2023년 9월 19일
0

뚜벅뚜벅 첫번째

목록 보기
15/26
post-thumbnail

클래스 멤버

1. 인스턴스 멤버 변수/메소드

-> 각 인스턴스 객체별로 독립적으로 가지고 있는 변수

2. 정적 멤버 변수/메소드

-> 클래스 이름 기준 전체 1개만 존재하는 변수
-> 객체 생성 필요없이 클래스 이름만 가지고 접근 및 호출이 가능
//new 안해도 사용 가능!!
-> 정적 멤버 변수/메소드에서는 인스턴스 멤버 변수/메소드를 호출할 수 없다.
(이미 태어난 입장에서 아직 태어나지도 않은 놈들한테 접근이 안된다)

인스턴스 -> 인스턴스 o
인스턴스 -> 정적(static) o
정적 -> 인스턴스 x
정적 -> 정적 o

  1. Calculator (라이브러리 클래스)
static double pi = 3.14; //정적(static) 멤버 변수
String color; //인스턴스 멤버 변수


void powerOn() { //인스턴스 멤버 메소드
	System.out.println("전원 On");
}
	
static double calculateCircleArea(int radius) { //원 넓이 계산
	//반지름 * 반지름 * 3.14
	double area = radius * radius * pi;
	return area;
}

void printInfoInstance() { //인스턴스 메소드
	powerOn(); //인스턴스 메소드
	System.out.println("컬러 계산기" + color);//인스턴스 변수
}

static void printInfoStatic() { 
							
//	powerOn(); //인스턴스 메소드(태어나지않은) //정적->인스턴스x
//	System.out.println("컬러 계산기" + color); //인스턴스 변수(태어나지않은) //정적->인스턴스x
		
	calculateCircleArea(5); //static끼리는 가능
	System.out.println("원주율 : " + pi); //static끼리는 가능
}
  1. ClassMain (실행 클래스)
//new 생성 안하고 O 다 static변수,메소드니까!
System.out.println("static 변수 pi 값 : " + Calculator.pi);

System.out.println(Calculator.calculateCircleArea(3));

Calculator.printInfoStatic();

=> 출력
static 변수 pi 값 : 3.14
28.26
원주율 : 3.14

final

=> 초기값이 최종값으로 인식되는..
=> 초기값 이후에 변경 불가능!

=> 상수 : 바뀌지 않는 고정 값
static final double BANK_RATE = 2.6;
-> 상수형 변수는 대문자로! _로 단어구분

접근제한자

(1) public : 다 쓸수있어!

(2) protected : 같은 패키지 + 자식 클래스

(3) default : 같은 패키지에서만

(4) private : 같은 클래스에서만!

1.라이브러리 클래스 (ClassAccess)

public class ClassAccess {

//필드 //필드변수는 외부에서 접근 못하게 막아놓고
private int a; 
private int b;
	
//메소드 //get,set은 접근할수있게 열어둔다
public int getA() { //돌려주는, 불러와
	return a;
}
	
public void setA(int a) { //받아오는, 저장하고
	if (a<0) {
		this.a = 0;
		return;
	}
	this.a = a;
}
	
public int getB() {
	return b;
}
	
public void setB(int b) {
	this.b = b;
}
	
//생성자
public ClassAccess() { //default 접근 제한 -> 같은 패키지에서만!
		
}
	
//메소드
public void methodPublic() {
		
}
	
protected void methodProtected() {
		
}
	
void methodDefault() {
		
}
	
private void methodPrivate() {
		
}

}
  1. 실행 클래스 (ClassPackage)
public class ClassPackage {

ClassAccess ca = new ClassAccess();
		
//ca.a = 20; 	 //필드변수 a는 private 접근 불가능
ca.setA(20); //setA 메소드는 public 접근 가능 //setA 메소드로 저장하고
		
ca.setA(-50); //내부 로직에 걸려서 0으로 저장
//ca.a = -50; //내가 원하는 값의 범위들만 쓰려면 변수a는 막고 set get으로만 접근!
		
System.out.println(ca.getA()); //getA 메소드로 불러와
		
ca.methodPublic(); //public은 전체공개 가능o
ca.methodProtected(); // protected 패키지 + 자식 가능o
ca.methodDefault(); // default 같은 패키지o
//ca.methodPrivate(); // private는 같은 클래스 안에서만 사용가능!!
					// ClassAccess에서만 사용가능!
}

=> 내가 원하는 값의 범위들만 쓰려면 변수a는 private으로 막고 public으로 set get으로만 접근!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보