1017

란이:)·2022년 10월 17일
0

공부일지

목록 보기
8/30

new int[5]; 주소값 정수가 5개담겨져 있는 공간의

hashCode() 주소값을 확인하기위한
한번 할당된 배열을 지울수 없다.

int[][] iarr1; 2차원 배열
무조건 생성할때 방의크기를 지정해야함 첫번째칸은
뒤에는 가변배열
iarr2 = new int[3][5] 정변배열

iarr.length = 3 iarr[0].length =5

중괄호를 열고 닫는거로 직접 선언해서 배열을 쓸 수 있다.

배열 복사에는 얕은 복사와 깊은 복사가 있다.
얕은 복사는 공유한다는 개념 stack의 주소값만 복사 주소값은 1개

내가사용한 메소드의 반환형을 확인해라

application3

깊은복사

cloneOf() 똑같은걸 하나 더만드는 거
arraycopy()성능면에서 더좋음
copyOf() 많이 쓰이는

같은 클래스내에 있는 static 메소드는 클래스명 생략해도 출력가능

originArr으로 반복을 돌리는 이유는 값이 있어서 효율이 있다

F3번 누르면 상세하게 들어갈수 있는 내용을 볼 수 있다.
Object 타입 모든 최상위 클래스 타입은 object 어떤 타입이 들어올지 몰라서
일단 최상위 타입으로 지정되어있음
Pos도착지의 약자 destPos 도착지

Arrays.copyOf(originArr, 7);
복사할 내용 , 7은 얼만큼 공간을 만들건지
7 = newLength 방의 크기를 만드는거
Math.min = 두수중에서 가장 작은 값을 넣어주는 것

origin length = 5 newLength= 7

package com.greedy.section03.array_copy;

import java.util.Arrays;

public class Application3 {

public static void main(String[] args) {
	
	/* 깊은 복사 */
	/* 
	 * 깊은 복사는 heap에 생성된 배열이 가지고 있는 값을
	 * 또 다른 배열에 복사를 해 놓은 것이다
	 * 
	 * 서로 같은 값을 가지고 있지만, 두 배열을 서로 다른 배열이기에
	 * 하나의 배열에 변경을 하더라도 다른 배열에는 영향을 주지 않는다.
	 * */
	
	/* 깊은 복사를 하는 방법 4가지*/
	/* 1. for문을 이용한 동이란 인덱스의 값 복사
	 * 2. Object의 clone()을 이용한 복사
	 * 3. System의 arraycopy()를 이용한 복사
	 * 4. Arrays의 copyOf()를 이용한 복사
	 *  */
	
	int[] originArr = new int[] {1, 2, 3, 4, 5};
	
	print(originArr);
	
	/* 1. for문을 이용한 동일한 인덱스 값 복사 */
	int[] copyArr1 = new int[10];
	
	for(int i = 0; i < originArr.length; i++) {
		
		copyArr1[i] = originArr[i];
	}
	
	/* 원본 배열과 복사한 값은 같은 값을 가지고 나머지 인덱스는 다른 값 , 다른 주소를 가지고 있다. */
	print(copyArr1);
	
	/* 2. Object의 clone()을 이용한 복사 */
	int[] copyArr2 = originArr.clone();
	
	/* 동일한 길이, 동일한 값을 가지는 배열이 생성되어 복사되며, 다른 주소를 가지고 있다. */
	print(copyArr2);
	
	/* 3. System의 arraycopy()를 이용한 복사 */
	int[] copyArr3 = new int[10];
	/*
	 * arraycopy의 각 위치별 사용값
	 * 1번째 : 원본배열
	 * 2번째 : 복사를 시작할 인덱스
	 * 3번째 : 복사본 배열
	 * 4번째 : 복사를 시작할 인덱스
	 * 5번째 : 복사할 길이
	 * */
	System.arraycopy(originArr, 0, copyArr3, 3, originArr.length);
	
	/* 복사한 만큼의 값은 같지만 길이도 다르고 주소도 다르다. */
	print(copyArr3);
	
	/* 4. Arrays의 copyOf()를 이용한 복사 */
	int[] copyArr4 = Arrays.copyOf(originArr, 7);
	
	/* 복사한만큼의 값은 같지만 길이도 다르고 주소도 다르다. */
	print(copyArr4);
	
}

/**
 * <pre>
 *      배열을 매개변수로 전달받아
 *      모든 인덱스에 저장되어 있는 값을 출력하는 기능을 제공
 * </pre>     
 * @param iarr 저장된 값을 출력하기 위한 정수 배열
 */
public static void print(int[] iarr) {
	
	/* 전달받은 배열의 hashCode 출력 */
	System.out.println("iarr의 hashCode : " + iarr.hashCode());
	
	/* 전달받은 배열의 값 출력 */
	for(int i = 0; i < iarr.length; i++) {
		
		System.out.print(iarr[i] + " ");
		
	}
	
	System.out.println();
}

}

-> iarr의 hashCode : 1023487453
1 2 3 4 5
iarr의 hashCode : 1651191114
1 2 3 4 5 0 0 0 0 0
iarr의 hashCode : 1586600255
1 2 3 4 5
iarr의 hashCode : 474675244
0 0 0 1 2 3 4 5 0 0
iarr의 hashCode : 932583850
1 2 3 4 5 0 0

Application4

향상된 for문 순차가 정해져있는 내용의 값을 가지고올때 많이 사용
조회용도로 사용
내가 어떤값을 출력할지 처음에 줄세워놓음
일반 for문보다 빠름

int i : arr2
왼쪽편은 변수를 선언했다 임시적으로
arr2에는 반복할 대상
package com.greedy.section03.array_copy;

public class application4 {

public static void main(String[] args) {
	
	int[] arr1 = {1, 2, 3, 4, 5};
	int[] arr2 = arr1.clone();
	
	for(int i = 0; i < arr1.length; i++) { 
		
		arr1[i] += 10;
		
	}
	
	for(int i = 0; i < arr1.length; i++) { 
		
		System.out.print(arr1[i] + " ");
	}
	
	System.out.println();
	
	/* 향상된 for문 : jdk 1.5 버전부터 추가되었다. 
	 * 배열 인덱스에 하나씩 차례로 접근해서 담긴 값을 임시로 사용할 변수에 담고 반복문을 실행한다.
	 * */
	
	
	for(int i : arr2) { 
		
		i += 10;
	}
	for(int i = 0; i < arr2.length; i++) { 
		
		System.out.print(arr2[i] + " ");
	}
			
	System.out.println();
	
	/* 주의 : 향상된 for문은 배열에 인덱스에 차례로 접근할 때는 편하게 사용할 수 있지만
	 * 값을 변경할 수는 없다. 대신 변경하는 것이 아니고 사용하는것이 목적이라면
	 * 조금 더 편하게 사용할수 있다.
	 * */		
	for(int i : arr2) {
		 
	    System.out.print(i + " ");
	}
	
	System.out.println();
}

}

->11 12 13 14 15
1 2 3 4 5
1 2 3 4 5

package com.greedy.section04.array_sort;

public class Application1 {

public static void main(String[] args) {
	
	int num1 = 10;
	int num2 = 20;
	
	System.out.println("num1 : " + num1);
	System.out.println("num2 : " + num2);
	
	int temp;
	temp = num1;
	num1 = num2;
	num2 = temp;
	
	System.out.println("num1 : " + num1);
	System.out.println("num2 : " + num2);
	
	int[] arr = {2, 1, 3};
	
	int temp2;
	temp2 = arr[0];
	arr[0] = arr[1]; //{1, 1, 3}
	arr[1] = temp2; // {1, 2, 3}
	
	/* {1, 2, 3} -> 오름차순정렬(ASC)
	 * {3, 2, 1} -> 내림차순정렬(DESC)
	 * */
	for(int i = 0; i < arr.length; i++) {
		
		System.out.print(arr[i] + " ");
	}
}

}

-> num1 : 10
num2 : 20
num1 : 20
num2 : 10
1 2 3

applicaiton2

순차정렬

{2,5, 4, 6, 1, 3}
1회전 : i:1, j=0
iarr[1] < iarr[0] -> 5 < 2 -> 교환x
2회전 : i:2, j=0
-> iarr[2] < iarr[0] -> 4 < 2 -> 교환x
-> iarr[2] < iarr[1] -> 4 < 5 -> 교환o {2,4,5,6,1,3}

{2,4,5,6,1,3}
3회전 : i:3, j=0
-> iarr[3] < iarr[0] -> 6 < 2 -> 교환x
-> iarr[3] < iarr[1] -> 6 < 4 -> 교환x
-> iarr[3] < iarr[2] -> 6 < 5 -> 교환x

4회전 : i:4, j=0
-> iarr[4] < iarr[0] -> 1 < 2 -> 교환
{1,4,5,6,2,3}
-> iarr[4] < iarr[1] -> 2 < 4 -> 교환
{1, 2, 5, 6, 4, 3}
-> iarr[4] < iarr[2] -> 4 < 5 -> 교환
{1, 2, 4, 6, 5, 3}
-> iarr[4] < iarr[3] -> 5 < 6 -> 교환
{1, 2, 4, 5, 6, 3}

if(iarr [i] < ia ㄴ 부등호를 반대로 바꿔주면 내림차순으로 변경함

package com.greedy.section04.array_sort;

public class Application2 {

public static void main(String[] args) {
	
	/* 순차 정렬
	 * 
	 * 순차정렬이란 정렬 알고리즘에서 가장 간단하고 기본이되는 알고리즘으로
	 * 배열의 처음과 끝을 탐색하면서 차순대로 정렬하는 가장 기초적인 정렬 알고리즘이다.
	 * */
	
	int[] iarr = {2, 5, 4, 6, 1, 3};
	
	for(int i = 1; i < iarr.length; i++) { //5
		
		for(int j =0; j < i; j++) {
			
			/* 오름차순 정렬을 위한 처리 (<)
			 * 내림차순은 부등호만 반대로 처리하면 된다.(>)
			 * */
			if(iarr [i] < iarr[j]) { // i:1 ->5 , j:0 -> 2
				int temp;
				temp = iarr[i];
				iarr[i] = iarr[j];
				iarr[j] = temp;
			}
		}
	}
	
	for(int i = 0; i < iarr.length; i++) {
		
		System.out.print(iarr[i] + " ");
	}
}

}
-> 1 2 3 4 5 6

application3

https://codepumpkin.com/category/algorithms/

[bubble sort]

{2,5,4,6,1,3}
1회전 : i:5
j:0
0-> iarr[0] > iarr[1] -> 2 > 5 -> 교환x
1-> iarr[1] > iarr[2] -> 5 > 4 -> 교환
{2,4,5,6,1,3}
2 -> iarr[2] > iarr[3] -> 5 > 6 -> 교환x
3->iarr[3] > iarr[4] -> 6 > 1 -> 교환
{2,4,5,1,6,3}
4->iarr[4] > iarr[5] -> 6 > 3 -> 교환
{2,4,5,1,3,6}

2회전 : i:4
j:0
-> iarr[0] > iarr[1] -> 2 > 4 교환x
-> iarr[1] > iarr[2] -> 4 > 5 교환x
-> iarr[2] > iarr[3] -> 5>1 교환o
{2,4,1,5,3,6}
-> iarr[3] > iarr[4] -> 5 > 3 교환
{2,4,1,3,5,6}

3회전 : i:3
j:0
-> iarr[0] > iarr[1] -> 2 > 4 교환 X
-> iarr[1] > iarr[2] -> 4 > 1 교환
{2, 1, 4, 3, 5, 6}
-> iarr[2] > iarr[3] -> 4 > 3 교환
{2,1,3,4,5,6}

 package com.greedy.section04.array_sort;

public class Application3 {

public static void main(String[] args) {
	
	/* 버블 정렬 (bubble sort)
	 * 
	 * 인접한 두 개의 원소를 검사하여 정렬하는 방법
	 * 구현이 쉽다는 장점이 있으며, 이미 정렬된 데이터를 정렬할 때 가장 빠르다.
	 * 하지만 다른 정렬에 비해 정렬 속도가 느리며, 역순으로 정렬할 때 가장 느린 속도를 가진다.
	 * */
	
	int[] iarr = {2,5,4,6,1,3};
	
	int temp;
	
	for(int i = iarr.length - 1; i >= 0; i--) {
		
		for(int j =0; j < i; j++) {
			
			//오름 차순 정렬은 >로 구분하고 
			//내림차순 정렬은 < 구분한다.
			if(iarr[j] > iarr[j+1]) { 
				
				temp = iarr[j];
				iarr[j] = iarr[ j + 1 ];
				iarr[j + 1] = temp;
			}
		}
	}
	for(int i =0 ; i < iarr.length; i++) {
		
		System.out.print(iarr[i] + " ");
	}
}

}
-> 1 2 3 4 5 6

첫시간

변수 ---> 기본자료형에 따라 변하는 수를 담는 공간

기본자료형
정수 byte short int long
실수 float double
문자 char
논리 boolean

배열 ----> 같은 자료형 끼리의 묶음

클래스는 서로다른 자료형의 데이터들을 사용자(개발자) 정의로 하나로 묶어 새로운 타입을 정의
(배열과 달리 다른 자료형들의 값을 하나로 묶을 수 있음)

int[] iarr = new int[5];
iarr -> 참조형변수

다른곳에서 클래스의 필드에 접근하기 위해 '.'(참조연산자)를 활용
자료형타입(사용자 정의타입) 참조변수(변수명) = new 자료형타입();
Student std = new Student();

chap06-class-and-object-lecture-source

package com.greedy.section01.user_type;

class Application1

window- show view - tasks // TODO 내일질문해야지

package com.greedy.section01.user_type;

public class Application1 {

public static void main(String[] args) {
	
	/* 회원 정보를 관리하기 위해 회원의 여러 정보(아이디, 비밀번호, 이름, 나이, 성별, 취미)
	 * 를 취급하여 관리하려고 한다.
	 *  */
	String id = "user01"; 
	String pwd = "pass01";
	String name = "홍길동";
	int age = 20;
	char gender = '남';
	String[] hobby = new String[] {"축구", "볼링", "테니스"};
	
	System.out.println("id : " + id);
	System.out.println("pwd : " + pwd);
	System.out.println("name : " + name);
	System.out.println("age : " + age);
	System.out.println("gender : " + gender);
	System.out.print("hobby : " );
	for(int i = 0; i < hobby.length; i++) {
		
		System.out.print(hobby[i] + " ");
	}
	System.out.println();
	
	/*
	 * 이렇게 각각의 변수로 관리하게 되면 여러 가지 단점이 있다.
	 * 1. 변수명을 다 관리해야 하는 어려움이 생긴다.
	 * 2. 모든 회원 정보를 인자로 메소드 호출 시 값을 전달해야 하면 너무 많은 값들을
	 *    인자로 전달해야 해서 한 눈에 안들어온다.
	 * 3. 리턴은 1개의 값만 가능하기 때문에 회원정보를 묶어서 리턴값으로 사용할 수 없다.
	 *    (서로 다른 자료형들이기 때문에)
	 * */
	
	/* 자바에서는 서로 다른 자료형의 데이터를 사용자(개발자) 정의로 하나로 묶어서
	 * 새로운 타입을 정의할 수 있는 방법을 제공해준다.
	 * 
	 * 필요로 하는 자료형이 추가로 존재하는 경우 자바에서는 클래스라는 매커니즘을 이용해서
	 * 사용자 정의의 자료형을 만들 수 있게 한다.
	 * */
	/* 사용자 정의 자료형 사용하기 */
	/* 1. 변수 선언 및 객체 생성 */
	/* 자료형 변수명 = new 클래스명(); <-- 이 구문은 객체(instance)를 생성하는 구문 */
	
	/* 사용자 정의의 자료형인 클래스를 이용하기 위해서는 new 연산자로 heap에 할당을 해야 한다.
	 * 객체를 생성하게되면 클래스에 정의한 필드와 메소드 대로 객체(instance)가 생성된다.
	 * 아이디, 비밀번호,이름, 나이, 성별, 취미를 연속된 메모리 주소에서
	 * 사용하도록 heap에 공간을 만든다.(클래스에 작성한 내용 대로 생성한다.)
	 * */
	
	Member member = new Member();
	
	/* 위와 같이 객체를 생성하고 나면 서로 다른 자료형들을 하나의 member,라는 
	 * 이름으로 관리할 수 있도록 공간을 생성한 것이다.
	 * (heap에 생성되기 때문에 jvm 기본값을 초기화된다.)
	 * */
	
	/*
	 * 필드에 접근하기 위해서는 레퍼런스변수명.필드명으로 접근한다.
	 * '.'은 참조연산자라고 하는데, 레퍼런스변수가 참고하고 있는 주소로 접근한다는 의미를
	 * 가진다. 각 공간은 필드명으로 접근한다.
	 * (배열은 인덱스로 접근. 객체는 필드명으로 접근이다.)
	 * */
	System.out.println("member.id : " + member.id);
    System.out.println("member.pwd : " + member.pwd);
    System.out.println("member.name : " + member.name);
    System.out.println("member.age : " + member.age);
    System.out.println("member.gender : " + member.gender);
    System.out.println("member.hobby : " + member.hobby);
    
    /* 2. 필드에 접근해서 변수 사용하듯 사용 할 수 있다. */
    System.out.println("변경 후 member.id : " + member.id);
    System.out.println("변경 후 member.pwd : " + member.pwd);
    System.out.println("변경 후 member.name : " + member.name);
    System.out.println("변경 후 member.age : " + member.age);
    System.out.println("변경 후 member.gender : " + member.gender);
    System.out.println("변경 후 member.hobby : " + member.hobby);
    for(int i =0; i < member.hobby.length; i++) {
    	
    	System.out.print(member.hobby[i] + " ");
    }
    
	System.out.println();
}

}

->
id : user01
pwd : pass01
name : 홍길동
age : 20
gender : 남
hobby : 축구 볼링 테니스
member.id : null

clas member
필드(변수)

Member <-- 클래스
속성 : 아이디, 패스워드, 이름, 나이 , 성별, 취미
Member mem1 = new Member();

클래스는 참조연산자 .을 통해 찾아가고
배열은 인덱스를 통해 찾아감

package com.greedy.section01.user_type;

public class Member {

/* 클래스 내부에는 메소드를 작성하지 않고 바로 변수를 선언할 수 도 있다.
 * 이것을 전역변수(필드 == 인스턴스변수 == 속성)라고 부른다.
 * */

String id;
String pwd;
String name;
int age;
char gender;
String[] hobby;

}

package com.greedy.section02.encapsulation.problem1;

public class Application1 {

public static void main(String[] args) {
	
	/* 필드에 바로 접근할 때 발생할 수 있는 문제점1 
	 * 필드에 올바르지 않은 값이 들어가도 통제가 불가능해진다.
	 * */
	Monster monster1 = new Monster();
	
	monster1.name = "두치"; 
	monster1.hp = 200;
	
	System.out.println("monster1 name : " + monster1.name);
	System.out.println("monster1 hp : " + monster1.hp);
	
	Monster monster2 = new Monster();
	monster2.name = "뿌꾸";
	monster2.hp = -200;
	
	System.out.println("monster2 name : " + monster2.name);
	System.out.println("monster2 hp : " + monster2.hp);
	
	Monster monster3 = new Monster();
	monster3.name = "드라큘라";
	monster3.setHP(200);
	
	System.out.println("monster3 name : " + monster3.name);
	System.out.println("monster3 hp : " + monster3.hp);
	
	Monster monster4 = new Monster();
	monster4.name = "프랑켄슈타인" ; 
	monster4.setHP(-200);
	
	System.out.println("monster4 name : " + monster4.name);
	System.out.println("monster4 hp : " + monster4.hp);
	
	
	
	
}

}

->monster1 name : 두치
monster1 hp : 200
monster2 name : 뿌꾸
monster2 hp : -200
양수값이 입력되어 몬스터의 체력을 입력한 값으로 변경합니다.
monster3 name : 드라큘라
monster3 hp : 200
0보다 작거나 같은 값이 입력되어 몬스터의 체력을 0으로 변경합니다.
monster4 name : 프랑켄슈타인
monster4 hp : 0

class Monster

new연산자를 만나면 주소값이생성됨

this는 몬스터 클래스를 가지고 생성한
내부에서 자기 자신에 대한 내용을 나타낼때
new monster가 생성될 당시 그대로 가지고 있구나
this 생성할 당시의 주소 값

monster에는 주소값이 있음
this.hp 주소값의 필드를 찾아감
전역에 있는거랑 지역에 있는거를 구분할때

this는 전역변수에 있는 거 찾아갈때이고
지역변수로 찾아갈때는 그대로 int
package com.greedy.section02.encapsulation.problem1;

public class Monster {

String name; // 몬스터 이름
int hp;  //몬스터 체력


/**
 * <pre>
 *    매개변수로 전달받은 정수를 이용해 hp의 값을 변경해주는 메소드
 *    단, 매개변수로 전달받은 값이 양수인 경우에만 전달받은 값으로 변경하고,
 *    0보다 작거나 같은 경우에는 0으로 변경한다.
 * </pre>
 * @param hp
 */
public void setHP(int hp) {
	
	if(hp > 0) {
		
		System.out.println("양수값이 입력되어 몬스터의 체력을 입력한 값으로 변경합니다.");
		this.hp = hp;
		
	} else {
		
		System.out.println("0보다 작거나 같은 값이 입력되어 몬스터의 체력을 0으로 변경합니다.");
		this.hp = 0;
	}
	
}

}

package com.greedy.section02.encapsulation.problem2;

public class Application

package com.greedy.section02.encapsulation.problem2;

public class Application {

public static void main(String[] args) {
	

// Monster monster1 = new Monster();
// monster1.name = "드라큘라";
// monster1.hp = 200;
//
// Monster monster2 = new Monster();
// monster2.name = "프랑켄슈타인";
// monster2.hp = 300;
//
// Monster monster3 = new Monster();
// monster3.name = "미이라";
// monster3.hp = 400;
//
// System.out.println("monster1 name : " + monster1.name);
// System.out.println("monster1 hp : " + monster1.hp);
// System.out.println("monster2 name : " + monster2.name);
// System.out.println("monster2 hp : " + monster2.hp);
// System.out.println("monster3 name : " + monster3.name);
// System.out.println("monster3 hp : " + monster3.hp);

	Monster monster1 = new Monster();
	monster1.setInfo("드라큘라");
	monster1.setHp(100);
	
	Monster monster2 = new Monster();
	monster2.setInfo("프랑켄슈타인");
	monster2.setHp(200);
	
	System.out.println(monster1.getInfo());
	System.out.println(monster2.getInfo());
}

}

monster

package com.greedy.section02.encapsulation.problem2;

public class Monster {

String name; // 몬스터 이름
int hp;  //몬스터 체력

// String kind; // 몬스터 이름
// int hp; //몬스터 체력

public void setInfo(String name) {
	
	this.name = name;
}

public void setHp(int hp) {
	
	if(hp > 0 ) {
		
		this.hp = hp;
		
	}else {
		this.hp = 0;
	}
}
public String getInfo() {
	
	return "몬스터의 이름은" + this.name + " 이고, 체력은" + this.hp + " 입니다.";
			
}

}
package com.greedy.section02.encapsulation.problem3;

public class Application

public 전체 허용

캡슐화 기호 암기

package com.greedy.section02.encapsulation.problem3;

public class Application {

public static void main(String[] args) {
	
	Monster monster1 = new Monster();

// monster1.kinds = "프랑켄슈타인";
// monster1.hp = 200;

	/*  선언한 필드대로 공간은 생성되어 있지만 직접 접근하지 못하고
	 *  public으로 접근을 허용한 메소드만 이용할수 있도록 해 놓은것
	 *  이것을 캡슐화 (encapsulation)이라고 부른다.
	 *  */
	
	monster1.setkinds("프랑켄슈타인");
	monster1.setHp(200);
	
	System.out.println(monster1.getInfo());
	
	/*
	 * 캡슐화는 유지보수성을 증가시키기 위해 필드의 직접 접근을 제한하고
	 * public 메소드를 이용해서 간접적으로 접근하여 사용할 수 있도록 만든 기술이다.
	 * 클래스 작성 시 특별한 목적이 아닌 이상 캡슐화가 기본 원칙으로 사용되고 있다.
	 * */
	
	
}

}
-> 몬스터의 종류는 프랑켄슈타인 이고, 체력은 200 입니다.

class package com.greedy.section02.encapsulation.problem3;

public class Monster {

/* 접근제한자
 * 
 * 클래스 혹은 클래스의 멤버에 참조연산자로 접근할 수 있는 범위를 제한하기 위한 키워드이다.
 * 
 * 1. public : 모든 패키지에 접근 허용
 * 2. protected : 동일 패키지에 접근허용 . 단 , 상속관계에 있는 경우 다른  패키지에서도 접근 가능
 * 3. default : 동일 패키지에서만 접근허용(작성하지 않는 것이 default)
 * 4. private : 해당 클래스 내부에서만 접근 허용
 * 
 * 위의 네가지 접근제한자는 클래스의 멤버(필드, 메소드)에 모두 사용 가능하다.
 * 단, 클래스 선언시 사용하는 접근제한자는 public과 default만 사용가능하다.
 * */

private String kinds; // 몬스터 이름
private int hp; //몬스터 체력

public void setkinds(String kinds) {
	
	this.kinds = kinds;
}

public void setHp(int hp) {
	
	if(hp > 0) {
		
		this.hp = hp;
	}else {
		
		this.hp = 0;
	}
}
public String getInfo() {
	
	return "몬스터의 종류는 " + this.kinds + " 이고, 체력은 " + this.hp + " 입니다.";
}

}

profile
FE Developer 🐥

0개의 댓글