static 키워드에 this는 에러가 난다.
어떤 메소드가 만들어져 있는 전역변수를 가져다가 사용할때 그 전역변수가 setter메소드를
통해 값이 초기화가 진행이 된 후에 메소드가 호출되어야 되는데 실수로 세터 메소드를 통해 변수에 값을 초기화하지
않고 전역변수를 가져다가 쓰는 메소드를 호출해 버릴수가 있다. 실수가 발생될수 있다.
setter메소드를 만들어 놨을때 setter메소드를 호출하는 것을 개발자가 깜빡하고 잊어버리는 일을 예방하기 위해서
생성자라는 것을 사용할수 있다.
생성자는 클래스를 new 키워드를 통해서 인스턴스화 시켰을때 자동으로 실행되는 메소드를 생성자라고 한다.
생성자의 실행은 강제다. 자동으로 실행되고 무조건 실행
void 리턴x 생성자를 정의할때는 리턴타입을 지정할수 없다.
즉, public void <-에러
public int <-에러
생성자를 만들때는 클래스 이름과 반드시 같게 만들어야한다.
클래스를 인스턴스화를 진행할때
즉 new할때 만들어져 있는 생성자를 호출
Calc c1 = new Calc(); <-에러
생성자가 매개변수를 받겠다고 했는데 매개 변수를 안넘겨 주면 에러가 발생
생성자를 setter 용도로 사용
생성자를 변수의 값을 초기화하는 setter용으로만 사용해야하는 것은 아니다
생성자는 인스턴스화가 되자마자 실행할 로직이 있을때 사용하면 됨
int re = (int) Math.random() <- (int) 캐스팅 자료형을 int로 바꾸겠다
Math.random() 메소드는 0부터 1사이에 있는 실수를 리턴해주는 메소드
즉 0.000000~0.999999 리턴 자료형은 double
int re = (int) Math.random()
실수인 값을 정수형 자료형인 int로 형 변환을 시키면 소숫점 이하가 전부 짤림.
해서 Math.random()메소드의 리턴값을 int 형변환 하면 소숫점이하 짤림 그래서0만나옴
Math.random() 메소드를 통해 랜덤으로 뽑을 숫자를 0.0~0.9가아니라 0.0~9.9가 되게 만들기 위해선 어떻게?
곱하기 10 double형
0~9를 만들고 싶으면 int 자료형으로 진행
0~9 +40을 하니까 40~49 까지 출력
코드가 맞는코드인지 if로 40미만 50초과 있는지 확인해보기
0~2 랜덤 출력
배열에 있는 정수를 정렬 시킬수 있다.
Arrays.sort(arr); 이메소드는 매개변수로 배열을 넘길수 있음 반드시 넘겨야함
그 배열에 있는 모든 값을 정렬시켜준다.
★클래스 상속
클래스끼리 부모와 자식관계를 맺을수 있음
자식 클래스는 부모 클래스에 정의 되 있는 멤버를 사용할수 있게 됨
멤버? 변수나 메소드
상속이라는 것은 다른 클래스에 만들어져 있는 멤버를 사용할수 있게 만드는 기술
★문제 실습
1. //# 가위바위보 게임을 만드시오. 아래 요구사항이 충족되게 진행하시오.
//1. 사용자와 컴퓨터가 가위바위보 게임을 할 수 있다.
//2. 가위, 바위, 보는 각 각 정수 1, 2, 3으로 처리
//3. 난수를 발생시켜 컴퓨터가 낸 것을 결정하고 사용자 입력 값과 비교하요 승패를 출력
//4. 컴퓨터와 사용자가 가위, 바위, 보 중에 무엇을 냈는 지 출력
//5. 게임은 무한으로 계속 진행되게 구현하는데
//사용자가 -1을 입력하면 게임이 종료되게 구현
2. 합,평균,차,합 출력해보기
extends Calc <- Calc 클래스 한테 상속 받겠다 라는 뜻
즉,Calc 클래스에 정의 돼 있는 멤버를 사용할수 있게 만들라는 의미.
기본적으로 상속을 안받았을 때는 다른 클래스에 있는 멤버를 사용할수 없음.
extends Calc <- 부모 클래스로 Calc클래스가 지정됨
extends Calc <- 이키워드를 작성한 클래스는 자식 클래스가됨
상속을 진행했을때 자식 클래스를 인스턴스화 해서 쓸때 그인스턴스로 자식과 부모에 있는 모든 멤버를
전부 사용할수 있음 그런데 거꾸로는 안됨 부모클래스를 인스턴스화해서 쓸때 그인스턴스로
자식에 있는 멤버를 사용할수 없다..
부모가 자식꺼 사용할수 없음
자식이 부모꺼는 사용할수 있음
자식이 자른 자식꺼 사용할 수 없음
★클래스 상속의 필요성??
첫번째 이유 - 여러 클래스에서 중복되는 코드가 있을때 그중복되는 코드를 다른 클래스로 분리시킨 후에 그클래스를 상속받게 만들어서 중복 코드를 제거하기 위함.
두번째 - 다른 사람이 만든 클래스를 내가 가져다가 사용할때 나는 그 클래스에 대해 정확하게 이해하고 있지 않을때
그 다른 사람이 만든 클래스를 내가 약간 수정해서 쓰고 싶을때가 생김 원하는 변수를 더 추가하고 원하는 메소드를 더추가
해서 사용하고 싶을때 그다른 사람이 만든 클래스를 직접 수정하다가 클래스를 잘못 수정해서 잘 되던것도 안되는경우가
생긴다. 클래스를 하나 만들어서 그 클래스를 다른 사람이 만든 클래스한테 상속 받게 구현한 후에 내가 원하는 코드를
추가하여 사용하게 됨 그럼으로써 다른 사람이 구현한 로직을 잘못 건드는 일을 예방할수 있게됨.
부모 클래스의 부모클래스의 부모클래스가 존재할수 있음
부모 클래스는 여러개가 지정될수 없다
자식 클래스는 여러개가 지정될수 있음
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA/ 접근 제한자 (0) | 2017.07.23 |
---|---|
JAVA/ 생성자,오버로딩,오버라이드 (0) | 2017.07.11 |
JAVA/ Class (0) | 2017.07.05 |
JAVA/ 메소드,return,함수 (0) | 2017.07.02 |
JAVA/ 반복문(while,for) (0) | 2017.06.28 |