BackEnd/Java

[Java]OOP_클래스

Hojung7 2024. 7. 23. 12:19
 클래스(class)란?

 

객체의 속성, 기능을 정의한 문서 (== 설계도)
  

[class 작성법]

 [접근제한자] class 클래스{
   
  // 기능1(생성자)
   
  // 기능2(메서드)
 }


 [class 작성 시 알아야 할 것!!]
  
 - class명은 꼭 대문자로 시작 !! (카멜 표기법)


 - 접근 제한자 
 
1)  [+] public
  
 - 뜻 : 공공의, 모두의
  
  - 같은 프로젝트에서 어디서든 접근 가능
  
  - public class : 같은 프로젝트에서 누구든지 해당 클래스를
     가져가서(import)해서 사용할 수 있음
  
  2) [~] (default)
  
  - () == 생략을 의미 -> class 왼쪽에 아무것도 안적음
  
  -  같은 패키지에서만 접근 가능
  -> 다른 패키지 클래스에 import 불가

 

 

#테스트

[기능]

package cls.pkg1;
public class ClassTest1 {
	public void method() {
		System.out.println("public은 어디서든 접근 가능");
	}
}

 

[실행] 같은 클래스

package cls.pkg1;

public class ClassRun1 {
	public static void main(String[] args) {
		
			// public class인  + 같은 채키지
			// ClassTest1 객체 생성하기 -> 문제 여부 확인
		ClassTest1 t1 = new ClassTest1();
		t1.method();

 

[실행] 다른 클래스

package cls.pkg2;

import cls.pkg1.ClassTest1;

public class ClassRun2 {
	public static void main(String[] args) {
		
		// public class + 다른 패키지
		// ClassTest1 객체 생성 하기  ->  문제 O/X
				
				ClassTest1 t1 = new ClassTest1();
				t1.method();

 

 

# default테스트

[기능]

package cls.pkg1;

// (default) 클래스 : 같은 패키지만 접근 가능
class DefaultClass {

		public void method() {
			System.out.println("(default)는 같은 패키지만 접근 가능");	
		}
}

 

[실행] 같은 클래스 => 문제 없음

package cls.pkg1;

public class ClassRun1 {
	public static void main(String[] args) {
    	DefaultClass d1 = new DefaultClass();
		d1.method();
	}
}

 

[실행] 다른 클래스 => 문제 발생

package cls.pkg2;

import cls.pkg1.DefaultClass;

public class ClassRun2 {
	public static void main(String[] args) {
    	DefaultClass d1 = new DefaultClass();
		d1.method();
     }
}

 

#예제

[기능]

package basic;

public class Nation {

	/* 속성 */
	// - 국민이라면 모두 가지고있을 공통적인 속성만 작성
	// == 추상화
	String name; 			// 이름
	int age;				// 나이
	char gender;			// 성별
	String juminNumber;		// 주민 번호
	String tel;				// 전화 번호
	String address;			// 주소
	
	/* 기능 */
	public void speakKoran() {
		System.out.println("한국어 가능");
	}
	
	public void 납세의의무() {
		
		// 19세 이상만 세금 납부 대상자
		if(age >= 19) {
			System.out.printf("%s 님은 세금 납부 대상자 입니다.", name);
			
		} else {
			System.out.printf("%s 님은 미성년자로 세금 납부 대상자 아닙니다.", name);
		}
	}
	
	//자기 소개
	public void introduce() {
		System.out.printf("이름은 %s이고, %d세 %c성 입니다\n", 
						name, age, gender);
	}
}

 

[실행]

package basic;

// 같은 패키지의 클래스는 import X
public class BasicRun {
	
	public static void main (String[] args) {
		
		// 국민 객체 생성
		// == 국민(Nation) 클래스에 작성된 내용대로
		// Heap 메모리 영역에 할당(생성) 하는 것
		
		Nation n1 = new Nation(); // 국민 객체 성성됨
		
		// 국민 객체에 값 대입
		n1.name = "홍길동";
		n1.age = 20;
		n1.gender = '남';
		
		// 국민 객체가 공통적으로 가진 기능(메서드 수행)
		n1.introduce();
				
		
		// 국민 객체 생성
		Nation n2 = new Nation();
		
		n2.name = "신짱구";
		n2.age = 5;
		n2.gender = '남';
		
	//	n2.tel = 
		
		// 세금 납부 여부 확인
		System.out.println("--------------------------");
		n1.납세의의무();
		
		System.out.println();
		n2.납세의의무();					
	}
}

 

#결과

'BackEnd > Java' 카테고리의 다른 글

[Java]OOP Static  (0) 2024.07.23
[Java]OOP_필드(Field)  (1) 2024.07.23
[Java]객체지향언어(OOP) 정의 및 Account  (0) 2024.07.23
[Java]배열(Array) for문  (1) 2024.07.21
[Java]배열(Array)  (0) 2024.07.21