2022.09.02 java 클래스, 객체, 필드, 메서드java2022. 9. 5. 16:39
Table of Contents
클래스
- 객체를 정의하는 설계도 또는 틀과 같은 의미
- 객체를 생성하는 데 사용
- ex) 붕어빵 기계 = 클래스, 붕어빵 = 객체(인스턴스)
class 클래스이름{
내용
}
- 필드, 메서드, 생성자, 이너 클래스로 구성
- 클래스 이름의 첫 글자는 주로 대문자
객체
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것
- 사물뿐만 아니라 철학, 생각 등 무형의 것들도 포함
- 속성 - 필드, 기능 -메서드로 이루어 짐
class Car{ //클래스
private String model; //자동차 모델
private int wheels; //바퀴
private String color; //색상
//↑필드
void stop() {...}; //브레이크
void accelerate() {...}; //엑셀
//↑메서드
}
객체 생성
클래스이름 참조변수이름 = new 클래스이름();
ex)
Car myCar = new Car(); //car 클래스를 기반으로 생성된 myCar인스턴스
- new 키워드를 사용하여 객체를 생성
객체 활용
Car myCar = new Car(); //객체 생성
myCar.power(); // . (포인트 연산자) 이용
myCar.accelerate();
myCar.stop;
class Car{
void power(){ //메서드
System.out.println("시동");
}
void accelerate() {
System.out.println("엑셀");
}
void stop() {
System.out.println("브레이크");
}
}
//출력값
시동
엑셀
브레이크
- 참조변수이름 뒤에 .(포인트 연산자)를 사용하여 객체에 접근
- 참조변수.필드명;
- 참조변수.메서드명();
필드
클래스에 포함된 변수를 의미
- 클래스 변수
- 인스턴스 변수
- 지역 변수
class Car{
static int wheel; //클래스 변수
String color; //인스턴스 변수
void method(){
int something = 0; //지역 변수
}
}
- 클래스 변수 - static을 가지고 있음, 클래스가 메모리에 올라갈 때 생성
- " - 프로그램이 종료될 때 소멸, 메서드 영역에 저장
- 인스턴스 변수 - 인스턴스가 생성될 때 생성, 인스턴스가 소멸할 때 소멸, 힙 영역에 저장
- 지역 변수 - 선언문이 실행될 때 생성, 블록을 벗어날 때 소멸, 스택 영역에 저장
메서드
어떠한 작업을 수행하기 위한 명령문의 집합
제어자 반환타입 메서드명(매개 변수) { //메서드 시그니처
메서드 내용 //메서드 바디
}
ex)
public static int add (int x, int y){
int result = x + y;
return result;
}
void printHello(){
System.out.println("hello");
}
- 반환 타입이 void가 아닌 경우 return 반드시 필요
클래스 메서드, 인스턴스 메서드
class Method {
int a = 10, b =20;
int add(){ //인스턴스 메서드
return a + b;
}
static int add (int x, int y){ //클래스 메서드
return x + y;
}
public class Main{
public static void main(String[] args){
System.out.println(Method.add(20, 30)); //클래스 메서드 호출
Method myMethod = new Method(); //인스턴스 생성
System.out.println(myMethod.add()); //인스턴스 메서드 호출
}
}
- 클래스 메서드
- static 키워드 보유
- 인스턴스 생성 없이 클래스명.메서드명 을 사용하여 호출 가능
- 인스턴스 메서드
- static 키워드 없음
- 인스턴스 생성 후 호출
메서드 오버 로딩
메서드를 중복하여 정의하는 것
조건
- 메서드의 이름이 같아야 함
- 메서드의 매개변수의 개수 또는 타입이 달라야 함
public class Overloading {
public static void main(String[] args) {
Shape s = new Shape();
s.area();
s.area(5);
s.area(10,10);
s.area(6.0,12.0);
class Shape {
public void area() {
System.out.println("넓이");
}
public void area(int r) {
System.out.println("원 넓이 = " + 3.14 * r * r);
}
public void area(int w, int l) {
System.out.println("직사각형의 넓이 = " + w * l);
}
public void area(double b, double h) {
System.out.println("삼각형의 넓이 = " + 0.5 * b * h);
}
}
- 메서드의 이름이 area로 전부 같음
- 매개변수의 개수와 타입만 다름
- 호출 시 괄호 안에 어떠한 인자가 들어가느냐에 따라 다르게 실행됨
'java' 카테고리의 다른 글
2022.09.06 java 상속, 포함, 메서드 오버라이딩, super (0) | 2022.09.08 |
---|---|
2022.09.05 java 생성자, 내부 클래스 (0) | 2022.09.07 |
2022.09.01 java 배열 (0) | 2022.09.04 |
2022.08.31 java 제어문 (0) | 2022.09.04 |
2022.08.30 Java 변수 타입 문자열 (0) | 2022.09.04 |
@Han_5ung :: 한성 개인 기록장
IT
github : https://github.com/HanSungHyeon