[JAVA]/[혼공자]

[혼공자] 클래스 요약본

북방바다코끼리표범 2023. 10. 1. 11:01

복습

https://shins99.tistory.com/90

 

[혼공자] 참조타입 요약본

복습 https://shins99.tistory.com/89 [혼공자] 조건문과 반복문 요약본 복습 https://shins99.tistory.com/88 [혼공자] 연산자 요약본 복습 https://shins99.tistory.com/85 [혼공자] 변수와 타입 요약본 변수 변수는 1개의

shins99.tistory.com


객체 지향 프로그래밍

- 현실 세계는 모두 객체로 표현할 있고, 특징(속성) 동작(함수) 포함한 여러 객체를 자동차 부품처럼 조립하여 코딩하는 방법

 

l  클래스 : 객체 구조 정의 , 객체의 설계도

l  클래스 구성 요소속성(멤버변수, 필드),  생성자함수함수(멤버 메소드)

              속성 : 객체의 고유데이터를 저장

              생성자함수 : 객체의 속성을 사전 정의한 값으로 초기화함

              함수 : 객체의 동작부분(기능 또는 동작)

l  객체변수 : 클래스로 부터 생성, new 생성자형태로 생성되어 저장됨, 참조자료형이므로 객체의 방번호(주소) 저장됨

l  new 연산자 : 객체를 생성하는 연산자이며, 생성자를 실행시키고, 메모리 방에 객체를 넣음

 

 

필드(== 속성 == 멤버변수)

- 객체의 특징을 나타내는 것으로 속성이라고

 

l   속성(필드) : 객체의 고유 정보를 저장

l  속성(필드) 선언 : 클래스 {} 블록 어디서나 선언 가능하나, 함수 내부에서는 선언 못함

l  속성 사용 : 클래스 내부의 생성자함수, 일반함수에서 바로 사용 가능,

l  클래스 외부에서 사용할 경우, new 생성자() 통해 객체변수를 생성하고 객체변수.속성 으로 사용 가능

 

 

생성자(함수)

- 생성자는 new 연산자로 호출되는 유사 함수임. 객체 생성 초기화를 담당하며 모든 클래스에 반드시 1개는 존재해야 , 클래스에 없으면 자동 추가됨

 

l  기본 생성자 : 클래스 선언 컴파일러에 의해 자동으로 추가되는 생성자( 매개변수가 없는 생성자 )

l  생성자 정의 : 객체를 생성할 호출되는 생성자를 명시적으로 선언 가능( 이때 컴파일러가 자동으로 기본 생성자를 만들어 주지 않는다 )

l  매개 변수 : 생성자 호출 값을 전달받기 위해 선언되는 변수

l  객체 속성 초기화 : 생성자 내부에서 객체의 속성을 초기화한다.

l  오버로딩 : 매개변수 타입 개수를 달리하는 생성자를 여러 선언하는 것을 말함

l  this : 객체 자신을 의미하는 객체변수, 클래스 내부의 생성자 함수에서 사용 가능

l  this.속성 : 클래스의 생성자 함수에서 객체의 속성을 접근할 사용 가능

l  this() : 클래스 내부에서 이미 정의된 다른 생성자를 호출할 사용( 중복 코딩 제거 )

 

 

메소드(함수)

- 객체의 동작(기능) 해당하며 실행코드가 중괄호{} 블록에 있으며, 호출되면 중괄호 블록의 모든 코드들이 일괄적으로 실행됨

 

l  함수 형태 :

 접근제어자 리턴타입 함수명(매개변수타입 매개변수명1...매개변수타입 매개변수명n){실행문}

  ex) public void sample(int a, String b, double c) {}

l  접근제어자 : public(공용), default(생략, 패키지 내의 자바파일 허용)

l  함수 이름 : 함수의 기능을 표현한 단어로 정의

 (카멜표기법(낙타표기법), 첫글자소문자 , 단어와 단어 사이는 대문자 사용)

l  매개변수 : 함수 실행 전달하고 싶은 데이터

l  리턴타입 : 함수가 실행된 이후 결과값을 {} 밖으로 전달하고 싶을 사용

   return 변수; // 변수 {} 밖으로 전달됨

l  리턴값이 없는 함수 호출 : 객체변수.함수()

l  리턴값이 있는 함수 호출 : double result = 객체변수.함수();

 

 

객체(인스턴스) 멤버와 공유(정적==전역) 멤버

- 객체에 정의된 속성 static 붙은 속성

 

l  객체(==인스턴스)멤버 : 객체 속성(멤버변수), 객체 함수(멤버메소드)

l   this : 객체 내부의 자기자신을 의미하는 객체변수, 자신의 클래스 안에서만 사용가능

l  공유(==정적==전역==클래스) 변수(함수) : 객체를 생성하지 않고 사용가능, 변수(함수)앞에 static 키워드 붙임

       사용법 : 클래스명.변수명, 클래스명.함수명()

l  싱글톤 : 공유 객체

l   final : 상수 만드는 키워드 , 변수의 앞에 붙이면 상수가 , 초기값 바로 지정해야함

       사용법 : final 변수명 = 초기값

l   static final : 공유 상수

 

 

 

 

 

패키지와 접근 제한자

- 프로젝트 개발 클래스 개수가 수십 , 수백 개로 늘어나면 관리가 어려움 발생.  체계적인 관리를 위해 패키지를 사용함(일종의 폴더와 유사)

 

l  패키지 선언 : 해당 클래스가 어떤 패키지에 속하는 선언
   (package
상위패키지.하위패키지;)

l   Import : 사용하고자 하는 클래스가 다른 패키지에 속할 경우(폴더 구조가 다른 경우) 컴파일러에게 알려주어야

l  접근 제한자 : 클래스와 인터페이스를 다른 패키지에서 사용하지 못하도록 막을 필요가 있음. 객체 생성을 막거나, 속성이나 함수를 사용 못하게 막을 필요가 있을 사용함
public :
공용, 모든 객체가 사용가능
protected :
같은 패키지에서 자식 클래스가 아닌 클래스는 사용할 없음 (상속 관계)
default :
같은 패키지안에 있는 자바 클래스는 서로 사용 가능
private :
같은 패키지 뿐만 아니라 모든 외부 클래스는 사용 못함
(
오직 자신만 사용가능)

l  Getter/Setter : 속성은 외부에서 접근할 없도록 막고 함수는 공개해서 외부에서 함수를 통한 속성에 접근하도록 유도
     Getter :
속성의 값을 외부로 리턴해주는 함수
     
명명법 : get속성명()
      ex) getId(), getName(){}
     Setter :
매개변수로 유효한 값만 받아 속성의 값을 변경하는 함수
     
명명법 : set속성명(매개변수타입 매개변수명){}
      ex) setId(String id), setName(String name)