본문 바로가기

공부/JAVA

[JAVA STUDY] DAY4. 객체 / 클래스 / 생성자 / 메소드 / 인스턴스 멤버 / this / 접근제한자 / static

728x90

DAY4. 키워드

  1. 객체
  2. 클래스
  3. 생성자
  4. 메소드
  5. 인스턴스 멤버와 this
  6. 접근제한자
  7. static

docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

 

docs.oracle.com

1-1. 객체

  • 특성으로 묘사되고 행위로 이뤄지는 것
  • 물리적으로 존재하는 것 (자동차, 책, 사람)
  • 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 것

객체 생성 순서

1-2. 객체간의 관계

  • 객체 지향 프로그램에서 객체는 다른 객체와 관계를 맺음
  • 집합 관계 : 완성품과 부품의 관계
  • 사용 관계 : 객체가 다른 객체를 사용하는 관계
  • 상속 관계 : 종류 객체와 구체적인 사물 객체 관계

객체간의 관계

1-3. 객체 지향 프로그래밍의 특징

  • 캡슐화
    • 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것
    • 외부 객체는 객체 내부 구조를 알 수 없음
    • 잘못된 수정으로 객체가 손상되지 않도록 사용
  • 상속
    • 상위 객체의 필드와 메소드를 하위 객체가 물려 받는 것
    • 반복된 코드의 중복을 줄일 수 있음
  • 다형성
    • 같은 타입이지만 실행 결과가 다른 것

2-1. Class

  • object(class를 이용해서 만든 독립된 개체)를 만드는 틀
  • template, 설계도
  • 붕어빵 틀
  • 객체를 생성하기 위한 필드와 메소드가 정의
  • 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(object 실체)
클래스 변수;
변수 = new 클래스();

2-2. 클래스의 이름

하나 이상의 문자로 이루어져야 한다. Car, SportsCar
첫 번째 글자는 숫자가 올 수 없다 3Car (X)
'$', '_'외의 특수문자는 사용할 수 없다 @Car (X), #Car(X)
자바 키워드는 사용할 수 없다 int (X), for (X)

2-3 클래스의 용도

  • 라이브러리(API)
    • 자체적으로 실행되지 않음
    • 다른 클래스에서 이용할 목적으로 만든 클래스
  • 실행용
    • main()메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
1개의 애플리케이션 = (1개의 실행클래스) + (n개의 라이브러리 클래스)

2-4 클래스의 구성 멤버

클래스의 구성 멤버

3-1. 생성자 (Constructor)

  • 클래스 이름과 동일해야 함
  • 생성자 자동생성 : 마우스 우클릭 > Source > Generate Constructor using Fields
  • return을 가질 수 없음
  • 변수 초기화가 목적

3-2. 생성자 오버로딩

생성자 오버로딩

public class Car(){
    Car() {....}
    Car(String model) {....}
    Car(String model, String color} {....}
    Car(String color, String model} {....} // 오버로딩이 아님
    Car(String model, String color, int maxSpeed) {....}
}   

4-1. 메소드

  • 객체의 동작(기능)
  • 호출해서 실행 할 수 있는 중괄호 { } 블록

메소드

4-2. 메소드 오버로딩

메소드 오버로딩

  • 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것
  • 오버로딩의 조건 : 매개변수 타입, 개수, 순서가 달라야 함

5-1. Instance 변수

  • 객체마다 가지고 있는 필드와 메소드
  • new로 객체 생성 시 마다 생성되는 변수

5-2. this()

  • 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드
  • 객체 내부에서 인스턴스 멤버임을 명확히 하기 위해 this. 사용
  • 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용
public class Person {
    int age;
    String name;
	
    Person(){
        this(12, "Anonymous");
    }
    Person(int age, String name){
        this.age = age;
        this.name = name;
    }
}

 

6. 접근제한자

  1. public : 모든 패키지에서 접근 가능
  2. protected
  3. default (생략) : 같은 패키지에서만 접근 가능
  4. private : 같은 class 내에서만 접근 가능 > 정보 은닉

7-1. static

  • 클래스에 고정된 필드와 메소드
  • 객체 내부에 존재하지 않고 메소드 영역에 존재
  • static은 객체를 생성하지 않고 클래스로 바로 접근해서 사용
  • static 블록 내부에 인스턴스 필드나 인스턴스 메소드 사용 불가 (static 붙어 있는 것만 사용 가능)
  • 객체 자신의 참조인 this 사용 불가

static (정적 멤버)

7-2. Instance vs static

  Instance static
필드 객체 마다 가지고 있어야 할 데이터 공용적인 데이터
메소드 인스턴스 필드로 작업해야 할 메소드 인스턴스 필드로 작업하지 않는 메소드

 

728x90
반응형