상속예제2, Random, Thread.sleep( );

김지원·2022년 6월 3일
0

Java

목록 보기
27/38
post-thumbnail

상속예제2

모든 직업을 가진것들은 사람일것이다.
사람을 부모클래스로 만들고 각 직업별 클래스(자손클래스)를 만들것이다.
모든 사람들의 공통요소를 가진 person클래스가 존재하고 모든 직업에서 person클래스 필드에 접근해보자.

Person class, Teacher class(Person상속), main(Jop) class를 만들어준다.

  • Person Class

매개변수를 만들고 기본생성자와 생성자를 호출하면 초기화 되도록 해주었다.

  • Person을 상속받는 Teacher Class

int cnt = 0; 은 아래에서 쓰이기 때문에 일단 무시하자.

Teacher에도 매개변수 3개를 만들고 초기화 해주었다.
Person의 변수(4개)들도 추가해주었다.

super(name,age,gender,money);
초기화 해주기 위해서( this사용하지 않는다. ) 부모생성자에 이 4개를 넘겨준다. 그러면 부모생성자에서 초기화가 됐을거고 여기에 있는걸 teacher객체에서 마치 내꺼처럼 사용가능해진다.

this.subject = subject; 가 없는 이유는 외부(main)에서 subject를 받아와서 어떤과목을 수업하는지 random으로 뽑아내보기 위해서 적지 않았다.


Teacher에 메소드를 생성해주었다.
여기서 cnt가 나온다.

cnt ++;
if(cnt % 10 == 0) income *= 1.1;
		
money += income;

강의를 10번할때마다 내 통장에 1.1배의 수익이 쌓이도록 if문 작성.


미리 출력 결과를 보자면 10번째 수업때 1.1배의 수익이 더해진걸 볼 수 있다.

this.subject = subject;
외부! main에서 subject를 초기화해준다.

System.out.println(name + " " + this.position + "이(가)" + this.subject + "을(를) 강의중");
여기서 this를 추가적으로 설명하자면..
지역변수 전역변수 이름이 같을때 구분하기 위해서 this를 사용하는게 원칙이다. 그거 외에는 본인 기호헤 맞게 사용한다. 명시적으로 나타내고싶을때 사용하면 된다.

main으로 넘어와서 이제 출력해보자.

Teacher중 한명인 '자바선생'을 만들어준다.
아래에 자바선생.teach();을 통해 출력될것이다.

랜덤으로 과목을 뽑아보자.
규칙성 없는 값에 규칙성을 부여하려면 배열을 사용한다.

그렇다면 Random이 뭘까?

Random

사실상 컴퓨터에서는 랜덤이 존재하지 않는다.
컴퓨터는 항상 규칙성을 가지고 있기 때문이다.
컴퓨터는 기준점을 잡고 규칙성있는 숫자들을 뽑는다.
상수면 그 다음 숫자를 예측할 수 있다.

만약에 이 기준점을 변수로 한다면 규칙성을 아무리 가지고 있어도
그 다음 숫자에 대한 규칙성이 깨지게 된다.
기준점(시드값)에 변수를 기준점이 계속바뀌기 때문에 다 난수가 되고 랜덤이 된다.
시드값을 시간으로 줬다. => 난수 발생!

		int index= 0;
		index = r.nextInt(3);

인덱스가 0~2까지 있는 배열에서 랜덤하게 꺼내고 싶으니깐 인덱스에 랜덤값을 넣었다.

선생님이 한번만 강의하는거 아니니깐 for문을 이용해서 반복돌리자!
반복문안에 사용한 trycatch문이랑 thread는 자바2에서 배우게 될것이다.
이렇게 쓰인다는 거만 알고 외우자.

자바선생.teach(arSub[index]);
try {
	Thread.sleep(1000); //컴파일러가 sleep을 만나는 순간 멈춘다.
				
} catch (InterruptedException e) { 

}	

sleep은 컴파일러를 재우는거다. 컴파일러가 sleep을 만나는 순간 멈춘다.
sleep( )안에 들어가는건 밀리초를 말한다. 1000분의 1초기 때문에 1초를 의미하고 1초씩 쉬었다가 찍어줘~라고 말한다고 생각하면 된다.

1초에 한번씩 과목이 랜덤으로 출력이 되는걸 확인해 볼 수 있다.

0개의 댓글

관련 채용 정보