03.클래스 (Class)
클래스 Class
클래스 ( 제품설계도) <---> 객체 (제품)
클래스
■ 객체를 생성하기 위해 속성과 기능을 정의한 일종의 틀 (설계도)
■ 클래스 ==데이터+함수
■ 사물이나 개념의 공통요소를 추상화(abstraction)하여 정의함
■ 하나의 소스파일에 여러 클래스 작성.
■ 변수-> 배열-> 구조체-> 클래스로 발전함
■ 사용자가 원하는 타입을 직접 만들수 있다.(==사용자 정의타입)
변수 | 1개의 자료형 1개의데이터 |
배열 | 1개의자료형 여러개의데이터 |
구조체 | 여러개의 자료형 여러개의 데이터 |
■ 클래스 소스파일 : 클래스명.java
(반드시 클래스명과 대/소문자까지 일치해야 함)
멤버
■ 멤버변수 : 클래스 내에 선언된 변수
■ 멤버메소드 : 클래스 내에 정의된 메소드
클래스명명규칙
■ 하나이상의 문자로 이루어져야함
■ 첫글자는 숫자가 올수 없음
■ &,_ 외의 특수문자는 사용불가
■ 예약어 사용불가
■ 관례적으로는 첫글자는 대문자, 나머지는 소문자사용
■ 관례적으로 두단어 이상이면 각단어의 첫글자는 대문자사용 ( 카멜표기법)
■ 한글도 가능은 하지만 가능한 영어로 작성.
클래스 용도
객체를 생성하는데 사용
*클래스가 필요한 이유, 객체(제품) 을 만들기 위해 클래스(설계도) 가 필요하다
1. 라이브러리용 클래스
■ API용도 ( Array.~ / Math.~ 등)
■ 다른 클래스에서 이용할 목적으로 설계되는 클래스
2. 실행용클래스
■ 프로그램의 진입점인 main() 메소드를 제공하는 역할
■ 프로그램 전체에서 사용되는 클래스중 하나만 실행용 클래스임.
한파일에 여러클래스 작성
1. 올바른예
1) 파일이름과 Public class이름 일치
2) public class 없는 경우 아무 클래스 이름=파일이름 가능
2.잘못된 예
1)하나의 파일에 2개이상의 public class존재X
2)파일이름=!public class이름
3)대소문자 불일치->X
클래스의 정의(선언) 형식
대표적인 형식
[접근제한자] [예약어] class클래스명 {
//속성부 (field)
[접근제한자] [예약어] 자료형 변수명;
[접근제한자] [예약어] 자료형 변수명;
//생성부 (constructor)
[접근제한자] 생성자명( ){ }
//기능부 (Method)
[접근제한자]반환형 메소드명(매개변수){
//기능정의
}
}
public class Member {
//속성
public String name;
public int age;
//생성자
public Member() {}
//기능
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
■ 사용자 정의타입
클래스파일
■ 일반적으로 소스파일 당 하나의 클래스를 선언.
■ 두개이상의 클래스선언도 가능
■ 컴파일 시 각 클래스마다 따로 .class파일이 생성됨
■ 파일 이름과 동일한 클래스명에만 public사용 가능
■ 가급적이면 소스파일 하나엔 하나의 클래스만 선언하는것이 좋음
여러 클래스파일 올바른 예
예시1
[ Hello2. java] // 소스파일이름
public class Hello2 {}// 클래스1
class Hello3{} //클래스2
* public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야 한다
예시2
[Hello2.java]
class Hello2 { }
class Hello3 { }
*public class가 하나도 없는 경우, 소스파일의 이름은 Hello2.java or Hello3.java 둘다 가능하다
여러 클래스파일 틀린 예
예시1
[Hello2.java]
public class Hello2 {}
public class Hello3 {}
* 하나의 소스파일에 둘 이상의 public class가 존재하면 안된다.
각 클래스를 별도의 소스파일에 나눠서 작성하던가 아니면 둘중의 한클래스에 public를 붙이지 않아야 함.
예시2
[Hello3.java]
public class Hello2 {}
class Hello3 {}
* 소스파일의 이름이 public class의 이름과 일치하지 않는다.
소스파일의 이름을 Hello2.java로 변경해야 맞다.
예시3
[hello2.java]
public class Hello2 {}
class Hello3 {}
* 소스파일의 이름과 public class 의 이름이 일치하지 않는다.
대소문자를 구분하므로 대소문자 일치해야함
"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.
이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."