day10 [클래스]
예시)
클래스 프린터 설계도
객체 프린터
멤버변수 프린터 정보: 제조사, 프린터명, 전원, 빨강잉크양, 파랑잉크양 등
메소드 프린터 기능: 칼라프린트, 흑백 프린트, 양면프린트, 단면 프린트, 전원/온/오프 등
학생 관리프로그램 : 학생들의 성적관리를 위함
학생 300명의 정보(학년, 반, 번호, 이름, 국어, 영어, 수학 성적)를 관리
클래스를 안쓰면 : int []grade = new int[300];
int []classNum=new int[300]
int []num= new int[300];
String []name = new String[300];
클래스가 있으면: Student []std = new Student[300];
(여러가지를 묶어서 관리할 수 있기때문에 편리)
클래스의 구성
- 멤버변수 : 정보
- 메소드 : 기능
- 생성자 : 정보의 초기값 설정
좌표 평면의 점을 나타내는 클래스
- 멤버변수 : x축의 좌표, y축의 좌표
- 메소드 : x,y좌표 출력 기능, 좌표 이동 기능
자동차 클래스
- 멤버변수 : 제조사, 차종, 색, 와이퍼/창문/핸들/타이어 갯수, 엔진, 자동/수동, 기어 등
- 메소드 : 시동, 전진/후진, 코너돌기, 주차, 와이퍼 동작,
게시판(ex: 네이버 뉴스)
- 멤버변수 : 제목(사진도), 내용, 작성자, 작성시간, 조회수, 추천/비추천
회원
- 멤버변수 : 아이디, 비밀번호, 이메일, 휴대폰번호, 성별, 등
클래스의 기본 문법
class 클래스명{
접근제한자 멤버변수;
접근제한자 메소드;
public 생성자;
}
접근제한자? (범위넓은 순=> 낮은순 정렬)
- public : 본인 클래스 + 같은 패키지 + 다른패키지 => 전체(공개)
- protected : 본인 클래스 + 같은 패키지 + 자식(파생)클래스 => 같은 패키지와 자식(상속에서 다시 설명)
- (default) : 본인 클래스 + 같은 패키지 (내가 아는 사람들, pakcage 안에 있는) => (나를 포함한 지인)
- private : 본인 클래스(=나)
(private)=> 본인 클래스에서만 호출이 가능. =본인 클래스의 메소드에서만 사용이 가능. = 다른클래스에서는 사용할 수 없다
* 클래스가 public이려면 클래스이름과 파일명이 같아야 한다. 다르면, public을 붙일 수 없음.
* 일반적으로 대부분의 멤버변수(정보)는 private으로 한다.
=> 멤버변수의 값을 직접 수정할 수 없다. (예: day10의 private D, ClassEx1)
=> 멤버변수의 값을 수정할 수 있는 "public으로 된" 메소드를 만들어줘야한다.
- 해당 메소드를 getter와 setter라고 부른다.
- getter는 private으로 된 멤버변수의 값을 확인하는 메소드
- setter는 private으로 된 멤버변수의 값을 설정하는 메소드
->쉽게 getter setter를 만들 수 있음.(페이지 공백에서 우클릭 => source => getter setter)
- 정보 수정은 어떤 기능을 통해 이루어져야 하기 때문에
* 일반적으로 대부분의 멤버메소드(기능)는 public으로 한다.
=>
예시)
자동차 클래스
- 멤버변수 : 제조사, 차종, 색, 와이퍼/창문/핸들/타이어 갯수, 엔진, 자동/수동, 기어 등
*public : 제조사, ...
*private : 기어(나말고 다른 사람이 바꾸면 안된대..), ...
클래스의 멤버 변수 접근방법
객체명.멤버변수명
예제)
2차원 좌표 평면의 점을 나타내는 클래스 : Point
멤버 변수 : x좌표, y좌표
멤버 메소드 : 좌표를 출력하는 기능, 죄표를 이동하는 기능
예제)
도형 원을 클래스로 만드려고 한다
- 멤버변수 : 원의 반지름, 중심점(x,y좌표)
- 멤버 메소드 : 원 정보 출력, 중심점 이동, 반지름 변경
- 위의 내용을 토대로 circle 클래스를 생성하고 멤버변수를 선언해보세요.
객체 선언 방법
1) 클래스명 객체; // 실제 만들어진건 아니고,만들어질 예정(객체 선언)
2) 클래스명 객체 = new 클래스명(); //실제 만들어짐(객체 선언과 동시에 생성), new 클래스명(); 에 있는 클래스명은 생성자를 말함(클래스에 생성자 없으면 기본생성자가 자동으로 만들어지니깐).
생성자 : 멤버 변수를 초기화 하는 곳
- 모든 클래스는 생성자가 꼭 있어야 한다.
- 클래스에 생성자가 없으면, 기본 생성자가 자동으로 만들어진다.
=> 클래스에 생성자가 있으면 기본 생성자는 자동으로 만들어지지 않는다.
- 메소드에서 리턴타입 자체가 없고(void 아님), 메소드명이 클래스명과 동일
기본생성자 생김새
public 클래스명(){
멤버 변수 초기화;
}
생성자(기본 생성자가 아닌 유형)
public 클래스명(매개변수){
멤버 변수 초기화;
}
예제)
원(Circle)
-멤버변수 : 중심점, 반지름
직각사각형(Rect)
-멤버변수 : 점 (대각선으로) 2개(왼쪽위의 점, 오른쪽 아래점) //직각이기 때문에 2개만 있어도 돼
너비, 높이