늦은 프로그래밍 이야기

객체지향 (1) 클래스, 인스턴스, 메소드, 생성자 본문

내일배움캠프/Java 기초

객체지향 (1) 클래스, 인스턴스, 메소드, 생성자

한정규 2022. 11. 15. 17:16

객체지향 (Object Oriented)

 - 클래스와 객체에 바탕을 둔 프로그램 개발 방법


클래스 (Class)

클래스

 - 공통 속성을 한 군데에 정의해 놓은 것

 - 사물의 상태 및 특성, 그에 관련된 기능을 정리하여 프로그램으로 표현

class 클래스명 {
    멤버
}

 

멤버 (Member)

 - 멤버 : 클래스 내부의 정보 (필드메소드)

 

필드 (Field)

 - 필드 : 상태 및 특성을 표현하기 위한 수단

class Phone {      // 클래스
    String model;
    String color;  // 필드
    int price;
}

인스턴스 (Instance)

 - 인스턴스 : 클래스로부터 만들어진 객체

 

인스턴스 생성

클래스명 변수명 = new 클래스명();
Phone galaxy = new Phone(); 
        galaxy.model = "Galaxy10";
        galaxy.color = "Black";
        galaxy.price = 100;

 

인스턴스의 멤버에 접근할 때

인스턴스명.멤버변수
galaxy.model = "Galaxy10";

메소드 (Method)

 - 메소드 : 클래스의 기능을 표현하기 위한 수단.

 - 어떠한 작업을 수행하는 코드를 하나로 묶어 놓은 것.

 - 반복적으로 재사용 가능. 중복된 코드를 제거하여 효율적인 코드작성. 프로그램 구조화.

 - 메소드의 이름은 동사로 시작해야 하고, Camel Case를 사용한다.

 

메소드 정의하기

 - 클래스 내부에 작성.

리턴값의형 메소드명(인수목록) {
    문장;
    ...
    return 식;
}
int add(int x, int y) {
    int result = x + y;
    return result;
}

 - 메소드 내의 변수(x, y)는 지역변수로서 메소드 내부에서만 사용할 수 있다.

 

 

메소드 호출하기

인스턴스명.메소드명(인수목록);
 int addResult = calculation.add(100, 90);

 - 가인수(parameter) : 메소드에 선언되어 있는 인수(변수)

 - 실인수(argument) : 메소드 호출시 전달되는 인수(값)

 - 여기서 가인수는 위의 x, y이고, 실인수는 100, 90이다.


생성자 (Constructor)

 - 인스턴스가 생성될 때 사용.

 - 인스턴스 초기화 메소드

 

생성자 정의하기

클래스이름 (타입 변수명, 타입 변수명, ...){
    인스턴스 생성 될 때에 수행하여할 코드
    변수의 초기화 코드
}

 - 클래스 내부에서 Command + N으로 생성가능.

 - 생성자를 작성하지 않을 경우 자바 컴파일러가 기본 생성자를 추가

 - 생성자 조건

 1) 생성자의 이름은 클래스명과 같아야 한다.

 2) 생성자는 리턴 값이 없다.

class Phone {      // 클래스
    String model;
    String color;  // 필드
    int price;
    
    // 인수가 없는 생성자
    Phone() {
        model = "iphone";
        color = "black";
        price = 100
    }

    // 인수를 3개 가지는 생성자
    Phone(String model, String color, int price) {
        this.model = model;
        this.color = color;
        this.price = price;
    }
}

 

생성자 호출하기

 - 인스턴스를 생성할 때 초기 값을 설정하는 것이어서 인스턴스 생성과 방법이 동일하다.

클래스명 객체변수명 = new 클래스명(인수목록);
Phone galaxy = new Phone("Galaxy10", "Black", 100);

'내일배움캠프 > Java 기초' 카테고리의 다른 글

객체지향 (3) 추상클래스, 인터페이스  (0) 2022.11.16
객체지향 (2) 상속, 접근제어자  (1) 2022.11.15
자주 발생하는 에러, 해결방법  (0) 2022.11.14
조건문, 반복문  (0) 2022.11.14
연산자  (0) 2022.11.07
Comments