- 클래스(class)
클래스를 보통 설명할때 찍어낸다고 많이 표현한다.
class FishBread {
}
public class Sample {
public static void main(String[] args) {
}
}
이러한 클래스의 가장 중요한 기능은 객체(object)를 만드는 기능이다.
class FishBread {
}
public class Sample {
public static void main(String[] args) {
FishBread fish1 = new FishBread();
}
}
new 는 객체 생성키워드이고, FishBread클래스의 인스턴스 (instance) fish1을 만들 수 있다.
fish1은 FishBread의 객체이다. 객체와 인스턴스는 용어의 차이라고 보면된다.
fish1이라는 객체, fish1은 FishBread의 인스턴스이다.
- 객체 변수
class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
public class Sample {
public static void main(String[] args) {
Animal cat = new Animal();
cat.setName("boby"); // 메서드 사용
System.out.println(cat.name);
}
}
위 코드와 같이 Animal 클래스에 선언된 name을 객체 변수라고 한다.
그리고 setName이란 메소드에서 this키워드를 통해 접근할 수 있다. this.name은 String name;을 가르킨다.
Animal cat = new Animal(); 로 새로운 객체를 만들고 그뒤 cat.setName() 을 통해 객체 변수에 접근 가능하다.
그리고 새롭게 Animal 클래스를 통해 새로운 객체를 만들어도 각각 독립적으로 객체 변수가 유지된다.
즉 class Animal{} 은 새로운 객체를 만들어 내는 공장, 도장, 틀 이라고 보면 된다.
- 메서드(method)
자바는 클래스 기반의 구조를 가지고 있다. 자바에서는 함수는 따로 존재하지않고 같은 클래스 안에
함수의 역할을 하는 메서드가 존재한다. 즉 클래스 내의 함수가 메서드이다.
예제가 아주좋아 이대로 이해하면 좋을거 같다.
믹서기 = 메서드, 과일쥬스 = 리턴값, 넣는과일 = 입력값으로 보면 될것이다.
public class Sample {
int sum(int a, int b) { // a, b 는 매개변수
return a+b;
}
public static void main(String[] args) {
Sample sample = new Sample();
int c = sample.sum(3, 4); // 3, 4는 인수
System.out.println(c);
}
}
여기서 sum()이 메소드이다.
그리고 리턴값이 없는 메소드는 void를 사용해 만든다.
void sum(int a, int b) {
System.out.println(a+"과 "+b+"의 합은 "+(a+b)+"입니다.");
}
그리고 메소드 내의 변수는 메소드 내에서만 작동한다. 그래서 return값을 사용하거나 객체 변수를 사용해야 연산
결과가 저장된다.
public class Sample {
void varTest(int a) {
a++;
}
public static void main(String[] args) {
int a = 1;
Sample sample = new Sample();
sample.varTest(a);
System.out.println(a);
}
}
또한 객체변수는 메소드에서 this키워드로 접근가능하다.
public class Sample {
int a; // 객체변수 a
void varTest() {
this.a++;
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.a = 1;
sample.varTest();
System.out.println(sample.a);
}
}
- 참고
점프투자바
'JAVA, Spring' 카테고리의 다른 글
JAVA 생성자(Constructor) (0) | 2023.04.04 |
---|---|
JAVA Call by value, 클래스 상속(Inheritance) (0) | 2023.04.04 |
Spring Boot CRUD만들어보기 (데이터생성 JPA, DB로저장) (0) | 2023.04.03 |
Spring Boot CRUD만들어보기 (form, dto, controller 설정) (0) | 2023.04.03 |
JAVA 객체지향 프로그래밍에 대한 이해 (0) | 2023.04.03 |