클래스

Korangii·2024년 6월 19일

Java

목록 보기
4/24
post-thumbnail

데이터(→ 변수)와 행위(→ 메서드)를 객체 안에 정의
공통적으로 같은 구조를(데이터와 메서드) 가지는 객체들을 서로 분류하기 위해 만든 게 클래스!!

객체

  • 객체(object)란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별가능한 것

  • 객체는 속성과 동작으로 구성. 자바는 이러한 속성과 동작을 각각 필드와 메소드라고 부름

  • 자바스크립트는 절차 중심이다.

  • 자바는 객체 지향이다.

  • 객체 지향 프로그래밍(OOP)

  • 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법


클래스 : 대상을
메서드 호출을 통해서 이루어진다.
입력을 매개변수로 받고 리턴해준다.
매개값과 리턴값

  • 객체지향프로그램에서는 절차보다 구조가 더 중요하다.

클래스와 인스턴스

  • 객체 지향 프로그래밍 : 객체를 생성하려면 클래스(설계도에 해당) 필요
  • 클래스명은 Pascal 표기법
// 클래스 선언
public class 클래스명 {
}

⭐초기화 중요

객체생성과
한 파일에는 하나의 public 클래스만 존재할 수 있다.
실행은 main 메서드가 정의되어 있으면 실행할 수 있다.
main()의 유무로 분류가능

  • main() 있을 때 : 메서드 실행 클래스
  • main() 없을 때 : 라이브러리 클래스

같은 패키지에 있는 경우, import하지 않고 바로 사용 가능

클래스 내부 채우는 법

  • 필드 : 데이터로 설명할 수 있는 부분, 명사형
  • 메서드 : 메서드로 정의할 수 있는 부분, 동사형
  • ⭐생성자 : 객체의 초기화 역할

문제를 풀 수 잇는 정도만 갖고 있으면 된다.
모자라지 않게, 넘치지 않게.
대입문서를 가지고 초기화해주기
어딘가에 만들어진 클래스를 자신의 속성으로 가질 수 있다.


필드 선언

  • 초기값을 제공하지 않을 경우, 필드는 객체 생성 시 자동으로 기본값으로 초기화
    정수타입 : byte, char, short, itn, long
    실수타입 : float, double

Car 입장에서 내부와 외부 구분하기

Car myCar = new Car();

new 연산자

  • 객체를 생성한 후 연이어 생성자(constructo)를 호출해서 객체를 초기화 함
  • 객체 초기화
  • 필드 초기화를 하거나 메서드를 호출해서 객체를 사용할 준비하는 것

클래스 변수 = new 클래스();
클래스() : 생성자 호출

⭐모든 클래스는 생성자를 가진다.
여러 개 가질 수도 있다.
컴파일러가 기본 생성자를 자동으로 추가해준다.

기본생성자 : 매개변수가 없는 생성자, default 생성자

  • 필드를 초기화해준다.

compile 에러 : 개수는 맞는데 타입이 틀릴 경우
다른 생성자인데 허용이 된다고????????
예시 : String이랑 int


자바는 전역변수 개념이 없다.

  1. 지역 변수 - 2. 필드 변수
    아무것도 없으면 필드 변수가 된다.
    자기 자신을 나타내는 참조 방식 : this.name=name;
    자바에서는 this 생략가능

stack에 this가 있다.
this가 참조한다.
메서드가 호출됐을 때 자바가 자동으로 생성해준다.

  • 오버로딩(overloading) : 메서드에 과적된 경우
  • 매개변수의 타입, 개수, 순서가 다르게 여러 개의 생성자 선언

// 받아오는 것
this.model=model;

// 고정해준 것
this.color="은색";
this.maxSpeed=250;

생성자가 또 다른 생성자를 호출할 수 있다.
this를 사용해서
반드시 첫번째 줄에 와야 한다.

라이브러리 생성자는 틀만 준다. 결과값을 만들어주지 않는다.
하나라도 정의하면 자동 추가되지 않는다.

클래스 구성요소

  • 필드 : 객체의 데이터를 저장하는 역할
  • 생성자 : new 연산자로 객체를 생성할 때 객체의 초기화 역할을 담당한다. 선ㄴ언형태는 메소드와 비스하지만, 러턴 타입이 없고 이름은 클래스 이름과 동일하다.
  • 메서드 : 동사형/클래스 안에 정의되어 있는 함수/return 타입을 기술해야 한다. 모든 값에는 타입이 있어하기 때문에 가신다. return 타입을 정확하게 기술해야 한다. void는 return 값이 존재하지 않는다.

int sum(int ...values) : 배열이다. 모든 매개변수를 받을 수 있다.

return타입이 같은지도 체크해줘야한다. 문자가 일치하는지도 확인해주기.
조건문 안 쓰고 리턴했을 때 : 에러 발생한다.

getter/setter : 이것을 통해서 외부객체에서도 사용할 수 있다.


인스턴스의 생명주기

  • 인스턴스 객체는 블록이 끝나면 garbage가 된다.
  • 동적으로 운영된다.(dynamic) <-> static(정적)
  • 개발자의 의지에 따라서 필요에 의해 사용된다.

클래스의 구성요소
필드 : 인스턴스마다 존재한다.
생성자 : this, new, 인스턴스객체
메서드

인스턴스와 static 멤버로 구분한다.
인스턴스

  • 객체에 소속된 멤버 / new, this
  • new 연산자를 통해 만든 걸로 접근한다.
  • 개발자가 동적으로 운영가능하다.
  • Heap에 new를 통해 만들어진다.

static

  • 클래스에 고정된 멤버
  • new 연산자없이 사용가능하다.
  • 언제나 존재한다.
  • 클래스 자체 정보로 접근해야 한다.

동적으로 작동할 필요없는 정보는 static 사용하기(하나만 존재하면 되기 때문에)
this는 연관된 데이터가 있어야 한다.
접근은 인스턴스가 아닌 클래스로 접근한다.


public 외부에서 접근 가능하다. class로 접근한다. Earth.EARTHRADIUS(반대:private)
static : 정적
void : 리턴값이 없어도 됨(주로 출력용으로 사용,
System.out.println()_)
main : 메서드 이름
() : 매개변수

class 규칙

  • 대문자
  • 캐멀 스타일로 작성
  • $,_ 호환가능
  • String은 클래스니까 첫 글자 대문자로 써야한다.

메서드 규칙

  • 소문자
  • 캐멀 스타일로 작성

return문
메소드의 실행을 강제 종료하고 호출한 곳으로 돌아간다는 의미
for문의 break와 같은 의미


fianl과 상수
상수 : ALL_THING 모두 대문자로 작성
대문자면 final이자 상수이다. 초기화 작업 필수이다.

profile
https://honeypeach.tistory.com/ 로 이전했습니다.

0개의 댓글