8. ★클래스와 객체

zza·2023년 9월 14일
0

Java

목록 보기
8/19
post-thumbnail

※chap4

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

클래스?

public class 이름{
	멤버변수 = 필드 = 속성 = 특성;
    멤버함수 = 메서드 = 동작 = 기능;
}

메서드와 패키지

  • 함수는 어디에도 속하지 않은 것
  • 메서드는 class에 속해있는 함수 = 멤버함수
  • 패키지: 클래스 폴더
  • 같은 이름의 클래스라도 다른 패키지에 있으면 상관이 없고, 다른 패키지의 클래스도 사용 가능하다.
  • 하나의 패키지 안에 같은 이름의 클래스는 안만들어진다.

함수

함수란?


  • 스택: 자료구조
    ex) 사이트 이동 : 구글 > 네이버 > 다음
    뒤로가기 : 다음 > 네이버 > 구글

★LIFO: Last In First Out. 마지막에 들어간 것이 제일 먼저 나옴

장점

return 예약어

  • void 반환값이 없는 함수 divide이므로 return을 만나면 함수 수행을 종료하고 함수 호출부로 돌아간다.

new 예약어

설계도

 class Student {
 	속성값 : 필드, 멤버변수
    메서드 : 기능동작, 멤버함수
}

▼ 객체 생성 : 인스턴스화

실제 객체
student Ahn

기본 자료형: 참조가 아닌 것.
ex)byte, int, char, long..
참조 자료형: 내가 만든 것, 기본이 아닌 것.
ex)String..

-> Ahn은 스택에 쌓이고, Ahn의 변수 name(인스턴스 변수)은 힙에 쌓여 Ahn이 name을 참조하여 사용 가능하다.
ex) Ahn.name

인스턴스

  • 인스턴스 : 클래스를 이용해 대상을 만들어내는 것
  • 기본 설계도: 모든 학생들의 공통사항
  • 특이사항은 각 객체에 추가

  • 메모리
    • 데이터영역: 가장 먼저 실행되어 가장 마지막에 종료됨. 이클립스에서 가장 많은 용량을 차지한다. -> 정적 메모리
    • 스택: main에 있는 정보. 프로그램 실행 시 생성되어 종료 시 사라진다. -> 정적 메모리
    • 힙: 필요할 때 생성되고 일정 시간 이상 사용하지 않는 정보는 주기적으로 가비지 컬렉터가 수거하여 정리한다. -> 동적 메모리

참조 변수

정리

  • 객체와 인스턴스는 의미가 비슷하다. 클래스를 이용해 만든다.
  • 스택에 생성된 학생 / 학생a의 이름, 나이, 주소
    학생 -> 정보를 가리키는것

생성자

  • 기본 생성자: 컴파일러가 자동으로 만들어주는 것. 매개변수가 없다.
  • 생성자 오버로딩: 프로그래머가 매개변수를 넣어 직접 만든 것. 기본 생성자와 이름이 같아야 한다.
public class Car{
	String company;	 **//변수 선언**
    String model;
    
    //기본 생성자
    CAr(){
    }
    
    //생성자 오버로딩
    Car(String compacy, String model) {
    this.compacy = company;	**// 변수 초기화**
    this.model = model;

참조 자료형

정보 은닉

  • public : 부르면 온다.
  • private : 불러도 안 온다.
    -> set / get 이용하여 간접적으로 접근해야 한다.

this

-bDay는 참조형 변수 > BirthDay의 y,m,d를 참조

객체 간 협력(실습)

※ chap3 - oop3 - student, subway, bus, transtest

static

  • static, final 자료형은 데이터 영역에 생성된다.
    ex) final PI = 3.14;
    ex) 지하철/가게의 한달 매출

    Q) 차 한대씩 늘어날 때마다 개수 1씩 자동 증가, 중복x
    ※chap4 - oop3 - Car
    A - 1001
    B - 1002
    C - 1003 ...

문제

Q-1)

※ chap4 - quiz - account(나), bank(쌤)

profile
zza

0개의 댓글