생성자
생성자는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드이다. 주로 객체의 초기화를 담당한다. 생성자의 이름은 클래스의 이름과 같아야 하며, 반환 타입이 없다.
public class Product {
private int number;
private String name;
// 기본 생성자
public Product() {
this.number = 0;
this.name = "Unknown";
}
// 매개변수를 받는 생성자
public Product(int number, String name) {
this.number = number;
this.name = name;
}
}
메소드 오버로딩
메소드 오버로딩은 동일한 이름의 메서드를 여러 개 정의하되, 각 메서드가 서로 다른 매개변수 리스트(타입, 개수, 순서)를 가지는 것을 말합니다. 오버로딩을 통해 메서드의 기능을 다형적으로 구현할 수 있습니다.
public class MathUtils {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
this 사용하는 멤버변수
this 키워드는 클래스의 인스턴스 자신을 참조하는 데 사용됩니다. 주로 생성자나 메서드에서 매개변수와 멤버 변수의 이름이 같을 때 이를 구분하기 위해 사용됩니다.
public class Product {
private int number;
private String name;
public Product(int number, String name) {
this.number = number; // this.number는 멤버 변수, number는 매개변수
this.name = name; // this.name은 멤버 변수, name은 매개변수
}
}
접근제어자
접근제어자는 클래스, 메서드, 변수 등의 접근 권한을 설정하는 키워드입니다. 주로 네 가지가 있습니다:
- public: 모든 클래스에서 접근 가능.
- private: 해당 클래스 내부에서만 접근 가능.
- protected: 같은 패키지 내에서, 그리고 상속받은 클래스에서 접근 가능.
- default (명시적 키워드 없음): 같은 패키지 내에서만 접근 가능.
public class Product {
private int number; // 클래스 내부에서만 접근 가능
public String name; // 모든 클래스에서 접근 가능
protected double price; // 같은 패키지와 하위 클래스에서 접근 가능
String category; // 같은 패키지 내에서만 접근 가능
}
클래스의 멤버변수에 데이터를 셋팅하는 방법
클래스의 멤버 변수에 데이터를 설정하는 방법은 주로 생성자, 메서드 또는 직접 접근(접근제어자가 허용될 경우)을 통해 이루어집니다.
public class Product {
private int number;
private String name;
// 생성자를 통한 설정
public Product(int number, String name) {
this.number = number;
this.name = name;
}
// 메서드를 통한 설정
public void setNumber(int number) {
this.number = number;
}
public void setName(String name) {
this.name = name;
}
}
getter/setter 함수
Getter와 Setter는 멤버 변수의 값을 읽고 설정하는 메서드입니다. 보통 캡슐화(encapsulation)를 위해 사용됩니다.
public class Product {
private int number;
private String name;
// Getter
public int getNumber() {
return number;
}
public String getName() {
return name;
}
// Setter
public void setNumber(int number) {
this.number = number;
}
public void setName(String name) {
this.name = name;
}
}
멤버변수와 로컬변수의 차이점
멤버 변수(인스턴스 변수)는 클래스에 선언되며 클래스의 인스턴스가 생성될 때마다 초기화됩니다. 클래스의 모든 메서드에서 접근할 수 있습니다.
로컬 변수는 메서드나 블록 내에서 선언되며, 해당 메서드나 블록이 실행될 때 생성되고 종료되면 소멸합니다. 해당 메서드나 블록 내에서만 접근할 수 있습니다.
public class Example {
private int memberVariable; // 멤버 변수
public void method() {
int localVariable = 10; // 로컬 변수
System.out.println(localVariable);
}
}
용어
|
정의 | 예시 |
객체 | 클래스의 인스턴스로, 데이터와 해당 데이터를 처리하는 메서드를 포함하는 하나의 단위입니다. | Product p1 = new Product();에서 p1은 객체입니다. |
인스턴스 | 클래스를 기반으로 생성된 실제 객체를 의미합니다. | Product p1 = new Product();에서 p1은 Product 클래스의 인스턴스입니다. |
매개변수 | 메서드나 생성자에 전달되는 값 또는 변수를 의미합니다. | public void setNumber(int number)에서 number가 매개변수입니다. |
캡슐화 | 객체의 상태(데이터)를 숨기고, 외부에는 필요한 메서드를 통해서만 접근을 허용하는 객체 지향 프로그래밍의 원칙입니다. | 멤버 변수를 private로 선언하고, 접근을 위해 getter와 setter 메서드를 사용하는 것. |
클래스 | 객체를 생성하기 위한 청사진(설계도)으로, 데이터와 메서드를 포함합니다. | public class Product { private int number; private String name; public Product(int number, String name) { this.number = number; this.name = name; } } |
메서드 | 클래스의 동작을 정의하는 함수입니다. 클래스의 데이터를 처리하거나 특정 작업을 수행합니다. | public void setName(String name) { this.name = name; } |
멤버 변수 | 클래스 내에서 선언된 변수로, 클래스의 속성을 나타냅니다. | public class Product { private int number; private String name; } |
'JAVA > JAVA 기초 문법' 카테고리의 다른 글
[java] java.lang.NullPointerException 에러 heap 메모리 지정 (0) | 2024.06.04 |
---|---|
[java] 배열 ArrayList, hashMap 설명 (0) | 2024.06.04 |
[java] 정수,실수 클래스로 생성하는법, 문자열 -> 숫자, 숫자 -> 문자열, 문자열 가공 방법 (0) | 2024.06.03 |
[java] 클래스 상속, Protected 엑세스,super, 메소드 오버라이딩 (0) | 2024.06.03 |