일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- git
- react
- PathVariable
- oracle
- HTML
- springboot
- Thymeleaf
- Variabla
- BCryptPasswordEncoder
- content-box
- Spring
- assertequals
- CRUD
- MVC
- git amend
- ResultType
- useContext
- JavaScript
- passwordencoder
- localStorage
- SQL
- Java
- JDBC
- git reset
- 배열
- WHEREIN
- git revase
- 부적합한열
- 이딴게개발자
- mybatis
- Today
- Total
개발새발
[Java] 클래스와 객체 본문
공부를 하면 할 수록 Class, 객체(혹은 인스턴스), 메서드, 생성자의 개념이 정확히 잡혀있지 않아 항상 머릿속에서 뒤죽박죽임을 느껴서 쓰는 글. 이대로 가다가는 정말 망해버릴 것같아서 정리를 해야겠다는 필요성을 느꼈다. 연습문제 등 할 숙제가 태산이지만 제대로 알지도 못하고 어영부영 문제 푸는 것보다 훨씬 나은 투자가 될 것같아서.. 아무튼
1. 클래스
객체의 속성과 기능을 코드로 구현한 것
클래스를 정의한다 = 객체를 클래스로 구현하는 것
ex) '학생'이라는 객체 > 클래스로 구현하기
멤버 변수: 클래스의 속성 (학번, 이름, 학년, 사는곳)
pacakage classpart;
public class Student{ //class: 클래스를 만드는 예약어, Student: 클래스 이름
int studentID; //멤버변수: 학번, 이름, 학년, 주소
String studetnName;
int grade;
String address;
}
주의: Java에서는 모든 요소가 클래스 내부에 있어야 함 (package선언 및 import 문장 제외)
2. 멤버 변수
클래스의 속성을 구현하는 기능.
클래스 내부에 선언하여 객체 속성을 나타내는 변수.
맴버 변수 선언
1) 기본 자료형 (int, double...)
2) 참조 자료형 (a.k.a 클래스형, 객체자료형)
ex) String, Date... 혹은 또 개발자가 직접 만든 또 다른 클래스 그 자체(Student, Person..)
3. 메서드 (a.k.a 멤버함수)
클래스 내부에서 멤버 변수를 사용하여 클래스 '기능'을 구현한 것
ex) Student 클래스 > 학생 객체 > 메서드: 학생에게 이름 부여하기, 학생이 사는 곳을 출력하기
pacakage classpart;
public class Student{
int studentID;
String studentName;
int grade;
String address;
public void showStudentInfo() {
System.out.println(studentName + "," + address);
}
}
위 코드블럭을 보면
Student 클래스 내부에 학생의 이름과 주소를 출력하는 'showStudentInfo' 메서드가 구현됨을 알 수 있다
4. 프로그램을 시작하는 main() 함수
main() 함수는 자바 가상 머신(Java Virtual Machine)이 프로그램을 시작하기 위해 호출하는 함수로, 클래스 내부에 존재하지만 클래스의 메서드는 아니다~
main() 함수에서 클래스를 사용하는 방법
1) 생성된 클래스 내부에 main() 함수 만들기
2) 외부에 테스트용 클래스를 만들어 사용하기
1)번 방법으로 클래스 테스트를 수행하려면 거의 모든 클래스가 main() 함수를 포함해야하기 때문에, 테스트용 클래스를 따로 만들어 실행하는 2)번 방식을 사용하는 것이 좋다
ex) 포켓몬 클래스를 생성하고, main() 함수를 포함한 클래스를 통해 포켓몬 클래스 테스트를 수행하기
포켓몬은.. 내가 좋아하니까 공부하기 싫은데 실습이라도 내 맘대로 해야지
package classpart;
public class Pokemon { //Pokemon 라는 클래스(객체) 선언
//1. 멤버변수 선언
int pokemonNum; //도감번호
String pokemonName; //포켓몬 이름
String pokemonType; //포켓몬 타입
int pokemonBaseStats; //포켓몬 종족값
}
도감번호, 이름,타입, 종족값 정도면.. 되겠지
그럼 이제 실행 클래스를 만들어야 되는데, 이 때 클래스를 생성하는 코드는 다음과 같다
클래스형 변수이름 = new 생성자;
클래스가 생성된다 = 클래스를 실제 사용할 수 있도록 메모리 공간(heap)을 할당 받는다
> 이렇게 실제로 사용할 수 있도록 생성된 클래스 = '인스턴스'
이젠 만들어둔 Pokemon 클래스를 실행하는 main() 함수를 만들어보자~
나는 윈디를 좋아하니까 윈디의 정보를 넣어서 만들어봤다
package classpart;
public class PokemonRun {//Pokemon 실행 클래스
public static void main(String[] args) {
Pokemon pokemon1 = new Pokemon(); //Pokemon 클래스에 pokemon1 인스턴스 생성
pokemon1.pokemonNum = 59;
pokemon1.pokemonName = "윈디";
pokemon1.pokemonType = "불꽃";
pokemon1.pokemonBaseStats = 555;
System.out.println("전국도감 번호 : " + pokemon1.pokemonNum);
System.out.println("포켓몬 이름 : " + pokemon1.pokemonName);
System.out.println("포켓몬 타입 : " + pokemon1.pokemonType);
System.out.println("총 종족값 : " + pokemon1.pokemonBaseStats);
}
}
인스턴스는 이런식으로 여러 개도 생성할 수 있다!
**참조변수 사용하기
참조변수를 사용하면 인스턴스의 멤버 변수와 메서드를 참조하여 사용할 수 있는데, 이때 도트(.) 연산자를 사용한다
ex) pokemon1 참조변수로 pokemonName 멤버변수에 이름을 저장하는 코드
pokemon1.pokemonName = "윈디";
5. 생성자
위의 포켓몬 실행 클래스 코드를 참고했을 때, 클래스를 생성할 때 사용되는 코드
Pokemon pokemon1 = new Pokemon();
Pokemon() 함수를 생성자라고 한다
클래스의 멤버 변수는 메서드에 의해 값이 변경될 수도 있지만, 처음 클래스를 생성할 때 값을 정해야 하는 경우도 있다.
이때 생성자는 클래스를 처음 만들 때 멤버 변수나 상수를 초기화해주는 역할을 한다.
1) 디폴트 생성자
매개변수도 없고 구현 코드도 없고.. 자바 컴파일러에서 자동으로 만들어주는 생성자
ex)
public Pokemon() {}
2) 생성자 만들기
멤버 변수에 대한 값들을 매개변수로 받아서 인스턴스가 새로 생성될 대 멤버 변수 값들을 초기화 해준다.
= 인스턴스가 생성됨과 동시에 멤버 변수의 값을 지정 및 인스턴스 초기화를 위해 생성자를 직접 구현함
ex)
public Pokemon(int pokemonNum) {
this.pokemonNum = pokemonNum;
}
생성자에 대해서는 할 말이 많아서.. 다음글로..
'Java > 개념을 Java' 카테고리의 다른 글
[Java] 배열과 리스트 1 : Array ~ 다차원 배열 (1) | 2023.09.18 |
---|---|
[Java] API (1) | 2023.09.14 |
[Java] 추상클래스 Abstract (0) | 2023.09.12 |
[Java] 변수의 종류 (0) | 2023.09.12 |
[Java] 생성자와 this (0) | 2023.09.11 |