카테고리 없음
[JAVA] 객체 그리고 클래스 - 필드(field),메소드(method)
하늘바람a
2024. 3. 4. 23:55
자바(JAVA)는 객체 지향 프로그래밍이다
객체 지향 프로그래밍
- 소프트웨어를 개발할 때, 부품에 해당하는 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법
객체
- 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것
객체 모델링
- 현실 세계의 객체를 소프트웨어 객체(필드와 메소드)로 설계하는 것
객체의 구성요소
- 값
- 예시) 모델 번호, 색, 무게
- 기능
- 예시) 엑셀 밟기, 브레이크를 밟는다, 방향지시등을 켠다
객체의 상호작용
- 객체들은 다른 객체와 서로 상호작용하면서 동작한다
- 상호작용 수단 : 메소드
- 객체가 다른 객체의 기능을 이용할 때 메소드를 호출한다
- 메소드(매개값1, 매개값2, ...);
- 메소드의 실행결과를 리턴값이라고 부른다. 리턴값은 호출한 곳으로 돌려주는 값이다.
클래스 : 객체의 설계도
필드(Field) : 객체의 데이터를 저장하는 역할
선언 형태는 변수 선언과 비슷하나 쓰임새는 다르다
메소드(Method) : 객체가 수행할 동작
다른 프로그램 언어에서는 함수라고 하기도 하는데, 객체 내부의 함수는 메소드라고 부른다.
1. 필드 선언과 사용
1.1 필드 선언
타입 필드명[=초기값];
// 예시
public class Car{
String model;
int speed;
boolean start = true;}
- 타입
- 기본타입(byte,short,int,long,float,double,boolean)
- 참조타입(배열,클래스,인터페이스 등)
※ 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다.
- 초기값을 제공하지 않을 경우, 기본값으로 초기화된다.
- 필드 타입별 기본값은 배열의 초기값과 같다.
1.2 필드 사용
- 필드값을 읽고 변경하는 것을 필드 사용이라고 말한다.
- 필드를 사용하기 위해서는 필드 선언뿐만 아니라 클래스로부터 객체를 생성해야 한다.
class Student{
// 필드 선언
String name = "홍길동";
int number = 5;
}
public class StudentExample{
public static void main(String[] args){
// 객체 생성
Student me = new Student();
// Student 객체의 필드값 읽기
System.out.println(me.name); // 홍길동
System.out.println(me.number); // 5
}
}
2. 메소드 선언과 호출
메소드 선언 : 객체의 동작을 실행 블록으로 정의하는 것
메소드 호출 : 실행블록을 실제로 실행하는 것
2.1 메소드 선언
리턴타입 메소드명(매개변수, ... ){
실행할 코드를 작성하는 곳}
// {}안은 실행블록
- 리턴타입 : 메소드가 실행한 후 호출한 곳으로 전달하는 결과값의 타입
- 리턴값 無 : void 작성
- 리턴값 有 : 타입 작성(String, int, double 등등)
실행 블록 안에서 return문으로 리턴값 반드시 지정해야함
- 메소드명 : 첫 문자는 소문자, 캐멀 스타일, 주로 동사로 시작한다.
- 매개변수 : 메소드를 호출할 때 전달한 매개값을 받기 위해 사용. 매개값이 없다면 생략가능
- 실행 블록 : 메소드 호출 시 실행되는 부분
2.2 메소드 호출
- 메소드를 호출하기 위해서는 메소드 선언뿐만 아니라 클래스로부터 객체를 생성해야 한다.
타입 변수 = 메소드();
class calc{
void powerOn(){ // 리턴값이 없는 메소드 선언
System.out.println("전원을 켭니다.");
}
int plus(int x, int y){ // 리턴값이 있는 메소드 선언
System.out.println("x+y = "+(x+y));
return x+y;
}
}
public class calcMain{
public static void main(String[] args) {
calc cal = new calc(); // 객체 생성
cal.powerOn(); // 메소드 호출
cal.plus(2,3); // 메소드 호출
}
}