본문 바로가기

코린이

혼공자 Chapter06. 클래스 본문

자바/혼공 학습단 10기

혼공자 Chapter06. 클래스

winsome99 2023. 7. 14. 00:58
반응형

06_1 객체

객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으며 식별 가능한 것을 말한다.

EX) 자동차, 자전거, 책, 강의 등

속성

필드(field) + 동작 메th드(method)로 구성되어 있다.

객체를 만들고 이를 조립한 프로그램을 만드는 기법을 객체 지향프로그램이라고 한다.

객체와 객체 간의 상호작용

메소드를 통해 객체들이 상호작용

메소드 호출이란 객체가 다른 객체의 기능을 이용하는 것

int result = Calcuator.add(10, 20);

리턴한 값을 int 변수에 저장

리턴값 = 객체.메소드(매개값1, 매개값2)

클래스

객체를 만들기 위한 설계도

클래스로부터 만들어진 객체를 클래스의 인스턴스라고 한다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.(하나의 클래스에서 여러 개의 인스턴스를 만들 수 있다.)

new 클래스(); 여기서 new는 클래스로부터 객체를 생성시키는 연산자이다.(생성자는 클래스 형태를 가지고 있다)

package ch1;

public class Car {
    
}
----------------------------------------------------------------------------------------
package ch1;

public class CarExample {
    public static void main(String[] args) {
        Car c1 = new Car();
        System.out.println("c1 변수는 Car 객체를 참조한다.");        
    }
}

클래스로 선언된 c1에 new 연산자가 리턴한 객체의 번지를 저장하는 예시의 코드이다.

클래스의 구성 멤버

클래스에는 객체가 가져야 할 구성 멤버가 선언되는데, 필드(field), 생성자(constructor), 메소드(method)가 있다.

06_2 필드(Field)

클래스를 구성하는 하나의 요소로 클래스의 내부 멤버이다.

객체의 데이터를 저장하기 위한 역할을 담당한다.

필드 선언

클래스 중괄호{} 블록 어디든 존재할 수 있으며 생성자 선언과 메소드 선언의 앞 뒤 어떤 곳에서도 필드 선언이 가능

하지만 생성자와 메소드 중괄호{} 블록 내부에는 선언이 될 수 없다.

타입 필드[= 초기값];

필드 사용

클래스 내부의 생성자와 메소드에서 바로 사용이 가능 외부에서 사용 시 객체를 생성 후 참조 변수를 통해 사용해야 한다.

public class Car() {
	//필드
	int speed;
	//생성자
	Car() {
 		speed = 0;
	}
	//메소드
	void method( ... ) {
		speed = 10;
	}
}

 

06_3 생성자(constructor)

new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.

여기서 객체 초기화란 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것을 말한다.

new 연산자에 의해 생성자가 실행되면 힙 영역에 객체가 생성되고 객체의 번지가 리턴되어 클래스 변수에 저장을 한다.

public class 클래스 이름{
	public 생성자(){}
}

생성자 선언

public class Car{
	Car(String color, int cc){ //생성자
  }
}

오버로딩: 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다.

this(): 객체 자신의 또 다른 생성자를 호출할 때 사용한다.

//this()사용의 예
class Car { String color; int door; Car() { this(color, 4);

 

06_4 메소드(Method)

메소드 선언은 선언부와 실행 블록으로 구성 되어 메소드 선언부를 메소드 시그너처라고 한다.

리턴 타입: 메소드가 리턴하는 타입을 표시

메소드 이름: 메소드의 기능이 드러나도록 식별자 규칙에 맞게 이름을 지어준다.

매개 변수 선언: 메소드를 실행할 때 필요한 데이터를 받기 위한 변수를 선언

리턴타입 메소드이름([매개 변수 선언, ...]){ ... }

다음은 메소드를 선언한 코드이다

public class Calculator {
		//메소드
    void poweron(){
        System.out.println("전원을 켭니다.");
    }

    int plus(int x, int y){
        int result = x + y;
        return result;
    }

    double divide(int x, int y){
        double result = (double)x / (double)y;
        return result;   
    }
    void poweroff(){
        System.out.println("전원을 종료합니다.");
    }
}
public class CalculatorExample {
    public static void main(String[] args) {
       Calculator myCalc = new Calculator();
       myCalc.poweron();

       int result1 = myCalc.plus(2, 3);
       System.out.println("result1: " + result1);

       byte x = 10;
       byte y = 3;
       double result2 = myCalc.divide(x, y);
       System.out.println("result2: " + result2);

       myCalc.poweroff();
    }
}

메소드 오버로딩(overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것을 말하며 자바에서는 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없다. 하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다.

진짜 내용이 엄청 많고 어렵다고 생각한다. 더 적고 싶지만 내용이 산으로 가고 복잡해질까 봐 여기까지 하겠습니다.
반응형

'자바 > 혼공 학습단 10기' 카테고리의 다른 글

혼공자 chapter08 인터페이스  (0) 2023.07.15
혼공자 Chapter07. 상속  (0) 2023.07.14
혼공자 2주차 미션  (0) 2023.07.14
혼공자 1주차 3장~5장(2)  (0) 2023.07.07
혼공자 1주차 미션 JDK설치(1)  (0) 2023.07.04
Comments