클래스
1) 클래스란?
객체 지향 프로그래밍에서 객체를 생성하려면 설계도에 해당하는 부분인 클래스가 필요
인스턴스 : 클래스로부터 생성된 객체
인스턴스화 : 클래스로부터 객체를 만드는 과정
클래스 구성 멤버 : 필드 , 생성자 , 메소드
2) 클래스 선언 방법
클래스명 작성 : 첫 문자를 대문자로 함 , 캐멀 스타일로 작성
public class 클래스명 { }
ex)
public class SportCar{ }
clas Tire { }
객체
1) 객체란?
객체 : 필드와 메소드로 구성되어있는 것
2) new 연산자를 사용하여 객체 생성하기
new 클래스()
클래스 변수 = new 클래스();
위 그림과 같이 stack 영역의 클래스 변수가 heap 영역의 객체를 참조함을 볼 수 있다.
ex)
public class Student{
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("s1 변수가 Student 객체를 참조한다.");
}
}
메소드
1) 메소드란?
메소드 (함수): 객체가 수행할 동작 , 객체와 객체 간의 상호작용을 위해 호출됨
2) 메소드 선언
[접근 제한자 (public , private , protected , default)] (static) 리턴타입 메소드명 (매개변수) { }
[리턴 타입]
- void : 리턴 값이 없음
- double : 리턴 값이 double형이여야 함
- int : 리턴 값이 int 형이여야 함
그 외 ( char ...)
[매개변수]
메소드를 호출할 때 전달한 매개값을 받기 위해 사용
받을 매개변수가 없다면 ()로 생략 가능
ex)
public class Calculator {
public static void powerOn() { }
public void powerOff() { }
public double divide(int x, int y ) { .... return double형; }
}
생성자
1) 생성자란?
생성자 : new 연산자로 객체를 생성할 때 객체의 초기화 역할을 담당 , 모든 클래스는 생성자를 가지고 있음
-> 선언 형태는 메소드와 비슷 but 리턴 타입이 없고 이름은 클래스 이름과 동일
기본 생성자 : 클래스에 생성자 선언이 없으면 컴파일러가 기본적으로 바이트코드 파일에 기본 생성자를 추가함
매개변수 생성자 : 객체를 다양하게 초기화하기 위해 사용함
2) 생성자 생성 및 호출
- 기본 생성자
//생성자 선언
[public] 클래스() { }
//생성자 호출
클래스명 클래스 변수 = new 클래스명();
ex)
class Car {
public Car() { }
}
public class CarExample {
public static void main(String[] args) {
Car car = new Car();
}
}
- 매개변수가 있는 생성자
//생성자 선언
클래스 ( 매개변수,...) { }
//생성자 호출
클래스명 클래스 변수 = new 클래스명 (매개값들..);
ex)
class Car {
String name;
int price;
public Car(String name , int price) {
this.name = name;
this.price = price;
}
}
public class CarTest {
public static void main(String[] args) {
Car c = new Car("소나타",50000000);
}
}
this 키워드
- 자기 자신의 메모리를 가르키는 역할
- 생성자에서 다른 생성자를 호출하는 역할
- 인스턴스가 자기 자신의 주소를 반환하는 역할
ex)
public class Car {
String name;
int price;
public Car(String name , int price) {
this.name = name ;
this.price = price;
}
}
'🦁아기사자' 카테고리의 다른 글
[Java] Enum (0) | 2025.03.26 |
---|---|
[Java] 멀티스레드 프로그래밍 (0) | 2025.03.25 |
[Java] 인터페이스 (0) | 2025.03.20 |
[Java] 패키지 (0) | 2025.03.19 |
[Java] 상속 (0) | 2025.03.18 |