객체의 틀을 만드는 클래스와 클래스를 만드는 방법, 클래스를 통해 만든 인스턴스에 대해서 알아보자.
: 객체의 속성과 기능을 코드로 구현한 것이다.
"클래스를 정의한다." = 객체를 클래스로 구현한 것
class 클래스이름{
}
.java
파일은 이름이 동일한 public class
를 가진다. ✍️ 예제코드
public class Student {
int studentID;
String studentName;
int grade;
String address;
}
👉 이 클래스가 담긴 파일의 이름은 Student임을 알 수 있다.
📃 멤버 변수의 자료형
class Subject {
String subjectString;
}
class Studentr{
String name;
Subject korSubject; //자료형을 다른 class로 한다.
}
new
라는 예약어와 생성자를 사용한다.
//(클래스 자료형) 참조변수명 = new 생성자;
Student seohyun = new Student();
👉 참조변수 seohyun
에 인스턴스가 생성된 힙메모리의 주소가 저장된다.
반환형 메소드명 (매개변수){
}
클래스가 메모리 공간에 생성된 상태
인스턴스 : 힙메모리공간에 저장
✍️ 예제코드
package test;
class School {
String nameString;
}
public class Student{
public static void main(String[] args) {
School pusanSchool = new School();
School seoulSchool = new School();
seoulSchool.nameString = "서울";
pusanSchool.nameString = "부산";
System.out.println(seoulSchool.nameString); //서울 출력
System.out.println(pusanSchool.nameString); //부산 출력
}
}
👉 같은 클래스지만 각 인스턴스별로 구분된 멤버 변수를 가지기 때문에 각각 다른 출력값을 준다.
더 알아보기
이 클래스는 누가 접근할 수 있을까? 접근을 제어하는 접근제어자에 대해서 알아보자.
🗂️ 프로젝트 : 가장 상위구조의 폴더
🔲 패키지 : 클래스 파일의 묶음이다.
📗 클래스 : 실제 코드가 적혀 있는 곳
package hellword; //hellword 패캐지
public class Hi { //클래스 이름 : Hi (대문자로 시작)
public static void main(String[] args)
System.out.println("Hi");
}
}
👉 이 클래스의 풀 네임은 hellword.Hi
이다.
접근 제어자 | 같은 클래스의 멤버 | 같은 패키지의 멤버 | 자식 클래스의 멤버 | 그 외의 영역 |
---|---|---|---|---|
public | ○ | ○ | ○ | ○ |
protected | ○ | ○ | ○ | X |
default | ○ | ○ | X | X |
private | ○ | X | X | X |
public
외부 클래스 어디에서나 접근할 수 있다.
내부 패키지도 접근할 수 있다.
➕클래스의 풀 네임 : 소속패키지이름.클래스명까지이다.
따라서 다른 패키지에서 접근할 때는 패키지이름.클래스명
으로 풀네임을 쓰던지 import
예약어를 쓴다.
import side1.Protected;
protected
default
private
🤔활용 방법
문제 상황 : 클래스 변수를 바꾸는 것에 조건이 필요할 때 ex) 꼭 25이상으로만 해야함!
해결 방법 : 다른 클래스에서 접근할 수 있는 메소드를 사용해서 변수 값 설정을 통제할 수 있다.
✍️ 예시코드
package test;
//클래스
class PrTest {
//변수의 값을 5~10의 값으로만 유지하고 싶음.
private int privateint;
int i;
void set(int input) {
if((5<=input)&&(input<=10)) {
this.privateint = input;
System.out.println("privateint값 " + this.privateint);
} else {
System.out.println("privateint값은 5~10의 값만 적용된다.");
}
}
}
public class Private {
//main함수
public static void main(String[] args) {
//클래스 생성자 new
PrTest test = new PrTest();
test.i = 15; //접근가능함
System.out.println(test.i); //15출력
// test.privateint; //private는 접근 불가 → 오류
test.set(3); //privateint값은 5~10의 값만 적용된다.
test.set(7); //privateint값 7
test.set(17); //privateint값은 5~10의 값만 적용된다.
}
}
👉 실행화면
15
privateint값은 5~10의 값만 적용된다.
privateint값 7
privateint값은 5~10의 값만 적용된다.
예제를 많이 담으려고 노력했다.
많은 도움이 되었습니다, 감사합니다.