🏫 Open API_JAVA

[35일차] 클래스 / 필드 / 메소드 / 생성자 / 인스턴스 / static

Dorothy_YANG 2022. 9. 12. 17:21
728x90

20220908(목)

  • 목차
    - 클래스
    - 필드
    - 메소드
    - 생성자
    - 인스턴스 멤버
    - static

< 객체 지향 프로그래밍 >

  • OOP (Object Oriented Programming)
    객체 지향 프로그래밍
    : 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법

  • C++, C#, Java 언어 : 클래스 기반의 객체지향 언어.
  • 객체 : 세상에 존재하는 모든 것들
  • 클래스 : 설계도(개체의 속성과 동작 모음)
더보기

ex)

기업체
- 고객관리(회원)
- 회원(객체)
     속성(필드 : 변수) 이름, 나이, 성별, 몸무게, ... 등 - 품사(명사)
      기능(동작, 행위 : 메서드) : 품사(동사)
             - 회원가입, 회원수정, 회원삭제, ...

 

public class Member {

// 내용 & 속성
String name;
int age;
char gender; // 'M', 'F'
// 기능
void register() { }

void modify() { }

void login() { }
 }


< 클래스 >

  • new : 메모리 생성 연산자 ➡ heap 영역에 메모리 생성
  • ex)
    1) Student.java 파일에 public class Student { } 클래스 정의

    2) StudentExample 파일에 Student 클래스 선언, main() 메소드에서 Student 객체 생성
         public class StudentExample {
              public static void main(String[ ] args) {
                     Student s1 = new Student(); // 기억장소 생성
                     Student s2 = new Student(); // s1과 완전히 독립된 서로다른 객체(메모리 영역 상이) } }

  • 클래스의 구성 멤버
클래스의 구성 멤버 public class ClassName {  }
필드 Field 객체의 데이터가 저장되는 곳 int fieldName;
생성자 Constructor 객체 생성 시 초기화 역할 담당

필드의 값을 설정하거나
메소드를 호출해서 객체 사용 준비 역할 수행
ClassName( ) { ... }
메소드 Method 객체의 동작에 해당되는 실행 블록 void methodName( ) { ... }

 


< 필드 사용 >

  • 객체 내부 : 필드 이름으로 바로 접근 가능
  • 객체 외부 : 변수.필드이름으로 접근

Dorothy 작업


  • Car.java ➡ 붕어빵 기계 세팅 완료
  • CarExample.java ➡ 객체 생성 및 필드값 읽기 & 변경
  • myCar1 & myCar2 : 기억장소 재사용으로 편리하다.

 

 


< 생성자 메소드 >

  • 생성자 메서드
     : 힙영역에 생성된 기억장소의 값을 초기화. 개발시 필요한 초기값으로 시작.
  • 생성자 메서드 수동으로 정의하면, 디폴트 생성자 = new Car(); 가 컴파일과정에서 자동생성이 안된다.

 


< 생성자 오버로딩 >

  • Constructor : 생성자
  • 생성자 오버로딩 : 매개 변수를 달리하는 생성자를 여러 개 선언하는 것
    (매개 변수의 타입, 개수, 선언된 순서가 똑같을 경우 매개 변수 이름만 바꾸는 것을 생성자 오버로딩 X)
  • 원래는 자바에서 같은 메소드는 여러개 만들 수 없는데, '생성자 오버로딩'은 미리 여러개 만드는 거 허용됨!

 


< 다른 생성자 호출 this() >

  • 사용이유
    생성자 오버로딩이 많아질 경우, 생성자 간의 중복된 코드 발생가능
    필드 초기화 내용은 한 생성자에만 집중적으로 작성하고 나머지 생성자는 초기화 내용을 갖고 있는 생성자를 호출
  • ex)
    this(model, color, 250); 을 중복 코드 대신 삽입

 


< 메소드 >

  • 메소드
    객체의 동작에 해당하는 중괄호 { } 블록
    메소드 호출 시 중괄호 블록 내 모든 코드들이 일괄적으로 실행됨

  • 메소드 오버로딩 
    - 클래스 내에 같은 이름의 메소드를 여러개 선언하는 것으로 
    - 하나의 메소드 이름으로 여러 기능을 담는다.
      ex) System.out.prinln( ) ➡ ctrl + space 치면 기능별 리스트 확인 가능
    - 개발자의 건강을 위해 만들어진 것 : 이름 만드는 불편을 줄여주기 위함

< 인스턴스 멤버와 정적 static >

  • 인스턴스 멤버
    객체(인스턴스)를 생성한 후
    사용할 수 있는 필드와 메소드
    지금까지 작성한 모든 필드와 메소드 ➡ 인스턴스 멤버들

  • 정적 (static) 
    클래스에 고정된 멤버
    로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
    객체마다 갖고 있을 필요가 없는 변하지 않는 공용적인 데이터

 

728x90