[JAVA]/07. 객체지향

03.클래스 (Class)

76beny 2022. 4. 6. 17:11

클래스 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차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."