JAVA

[JAVA]강제 형변환 , 접근 제한자

로돌씨 2024. 2. 2. 17:46

강제 형변환

package com.test01;
//형변환 
public class variable04 {
	//프로그램의 시작점
	public static void main(String[] args) {
	
	}
	
	public void test1() {
		//"a" + 1 => "a1"
		//"a" + "1" => "a1"
		//자동형변환됨 -> 1이 문자열 "1"로 바뀜 
	
		//큰 타입에서 작은타입으로자동형변환은 안됨 그래서 '강제형변환 사용해야함'
	}
	}

 

public void test2() {
			int num = 'A';
			System.out.println(num);
			//1.준비 =>클래스명 변수명 = new 클래스명();
			variable04 test = new variable04();
			//2.실행 =변수명.메소드명();
			test.test2();

 

public void test3() {
			//자동 형변환이 일어난다.
			int num = 'A';
			System.out.println(num);
			
		char ch = 97;
		System.out.println(ch);
			//음수값 저장 불가능
		//ch = -97;
		
		//int 자료형 변수의 값은 강제 형변환 해야한다.
		
	char ch2 = (char)num;
	System.out.println(ch2);
	
int no=-97;
char ch3 = (char)no;
System.out.println(ch3);

 

접근 제한자

접근 제한자(Access Modifier) 는 클래스 및 인터메이스 그리고 이들이 가지고있는 멤버의 접근을 제한하기 위해 사용.
객체의 생성을 막기위해 생성자를 호출하지 못하게 하거나 필드나 메소드를 사용하지 못하도록 막아야 되는 경우가 존재함
이럴 때에 사용하는것이 바로 접근 제한자!
public , protected , private 등 세가지 종류가 존재함 .

 

1. public 접근 제한자 : 외부 클래스가 자유롭게 사용 할 수 있도록 함 

2. protected 접근 제한자 : 같은 패키지 또는 자식 클래스에서 사용 할 수 있도록 함

3. private 접근 제한자 : 외부에서 사용 될 수 없도록 함

4. default 접근 제한 : 같은패키지에 소속된 클래스에서만 사용 가능

 

package com.test01;

public class method_test_02 {

	public static void main(String[]args) {
		method_test_02.publicMethod();
		method_test_02.protectedMethod();
		method_test_02.defaultMethod();
		method_test_02.privateMethod();
		//클래스명.접근제한자명();
		
	}
	//접근제한자:public , protected , default , private 
	//어디서나 접근 (실행) 가능 (+)
	public static void publicMethod() {
	 System.out.println("public method");
	}
	//상속시 상속된 곳에서
	//상속이 아닌 경우 같은 패키지 내에서(#)
	protected static void protectedMethod() {
	 System.out.println("protected Method");
	}
	//같은패키지 내에서(default)
	static void defaultMethod() {
		System.out.println("default Method");
	}
	//현재 클래스 내에서 (-)
	private static void privateMethod() {
		System.out.println("private Method");
		
	}
	
	
}

-> 클래스 메스드 02에 작성

 

package com.test01;
//메소드 02클래스랑 같은'패키지'
public class method_test_01 {
public static void main(String[] args) {
	//static 메소드 호출
	//클래스명.메소드명();
method_test_02.publicMethod();
method_test_02.protectedMethod();
method_test_02.defaultMethod();
//method_test_02.privateMethod(); 같은 클래스 내에서 확인불가 
}
}

→클래스 메소드01에 저장된 내용

privateMethod는 같은 클래스 내에 있지않아 에러가 뜨는 모습!

 

package com.test02;

import com.test01.method_test_02;

public class method_test_03 extends method_test_02 { //extends method_test_02 
상속하는 구문)
public static void main(String[] args) {
	method_test_02.publicMethod();
	//method_test_02.defaultMethod(); ->같은 패키지가 아니기떄문에 에러
	method_test_02.protectedMethod(); // 상속받았기때문에 가능   
	
}
}

→다른 ‘패키지’에 있는 메소드03에 저장된 내용

 

defaultMethod는 같은 패키지가 아니기 때문에 에러가 난 모습

protectedMethod도 원래라면 에러가 나야하나 extends method_test_02구문을 통해 ‘상속’받았기에

에러가 나지않고 정상 실행 되는 모습

 

 

매개 변수가 있는 메소드 실행

//매개변수 있는 메소드 실행
	//1.준비 클래스명 변수명 = new 클래스명();
	test t = new test();
	t.sum(2,5); 
   int no = t.sum2();
   System.out.println(no);
   
   int sum = t.sum3(128322838 , 22213123);
   System.out.println(sum);

 

package com.test02;

public class test {
//num1,num2 => 매개변수
	public void sum(int num1, int num2) {
		System.out.println("sum() : " + (num1+num2));
		
	}
	//반환형 , 리턴타입
	public int sum2() {
		return 4;
	}
	public int sum3(int no1, int no2) {
	int sum = no1 + no2;
	return sum;
}
}

출력->

public method
protected Method
sum() : 7
4
150535961

→같은 패키지안의 다른클래스에서 작성된 코드

'JAVA' 카테고리의 다른 글

[JAVA]조건문  (1) 2024.02.13
[JAVA]제어문  (0) 2024.02.08
[JAVA] 연산자  (0) 2024.02.04
[JAVA] 변수  (1) 2024.02.01
[JAVA] 프로그래밍 기초  (0) 2024.02.01