본문 바로가기
IT★_공부

자바의 Class

by 문또끼 2022. 8. 23.

Class

class란?

유사한 특징을 지닌 객체들의 속성을 묶어 놓은 집합체 이자 설계도이다.

필드. 메소드. 생성자가 포함된다.

객체(object) : class를 가지고 메모리에 실제 구현한 구현체.

            : 자바에서는 instance라고 함.

필드(field): 해당 클래스의 속성

메소드(Method): 명령문들의 집합. 기능을 모아둔 함수.

생성자(Constructor): 필드를 초기화, 객체를 생성

OOP( Object Oriented Programming )

Java는 객체 지향 프로그래밍(OOP : Object Oriented Programming ) 언어 이다. 기능들을 객체별로 나눈 것을 말하며, 특징으로는 추상화, 상속, 다형성, 캡슐화가 있다.

객체지향 특징

추상화 ( abstraction )

: 여러 가지의 공통점 또는 비슷한점 을 하나로 추상적으로 묶어 큰 틀을 만들어두는것

상속 ( inheritance )

: 상속받는 클래스는 상속주는 클래스의 변수와 메소드를 사용하는 것 ㄴoverride (재정의) : 부모의 것을 가져다가 내맘대로 확장시켜서 사용. : 부모의 메서드의 껍데기가 동일해야 함.

다형성 ( polymorphism )

: 형태는 같지만 다른 행위를 하는 것 ㄴoverload (다기능) : 같은 이름의 메소드, 파라미터에 따라 다른 명령을 수행함. 리턴타입은 상관없음 (현재 class 내에서만 사용가능.)

캡슐화 ( encapsulation )

: 기능만 사용 (코드 은닉)

    여러 값이나 객체 클래스를 만들어두고 실행객체에서 다른 객체를 가져와서 만듬

메모리(Memory)

 

static : class, static method가 저장됨.

stack : 지역변수, method가 저장됨. (instance 변수가 저장되는 곳.)

First in Last out : 먼저 들어온게 가장 마지막에 나간다 (통에 아래부터 쌓이는 형태)

heap : 값, 객체가 저장됨.

garbage collection: 메모리 영역 중에서 필요없게 된 영역을 없애는 기능.


class변수 : 모든 객체에 같은 값 적용. ex. static hiar = "long"; //static 영역에 저장.

instance 변수 : 객체마다 다른 값 부여 가능. ex. String hair. // heap 영역에 저장. - 객체가 만들어지고, 객체 안에 있다고 생각하자. 따라서 객체마다 다른 값을 가질 수 있다.

지역변수: 메소드나 생성자 내부에 생성. 메소드 종료 시 소멸


 

BBB b1 = new BBB(); static stack = heap (class) (변수) = (객체)

super : 부모 객체 : 부모 생성자 호출 : 없어도 자동으로 사용됨

this : 나 객체 : 내 클래스의 전역 값 수정 (동일한 이름의 지역변수가 없다면 안써도 됨)

(super , this 둘다 뒤에 () 가 붙으면 생성자 가 됨)

getter/ setter 사용이유

: 캡슐화, 은닉화

1.내가 원하는 상황에서 값을 컨트롤 할 수 있음. (유효성 검사 )

  1. 접근제어

getter : 읽기전용 , setter: 쓰기전용으로 접근을 제어함.

상속

extends : class가 class를 상속할 경우 : 다중상속 불가.

implement : class가 interface를 상속할 경우 : 다중상속 가능.

인터페이스란?

일종의 추상클래스로, 구현된 것은 없고 밑그림만 있는 설계도.

일반 메소드와 변수를 가질 수 없고, 추상메소드와 상수만을 가질 수 있다.

Abstract class

추상 클래스 : 추상 메소드를 하나이상 가진 클래스. (extends)

추상 메소드 : 선언만 되어있는 바디가 없는 메소드.

ㄴ 빈공간 클래스로 상속받은 자식이 구현해야하는 메소드

ㄴ 자식이 일반클래스이고 추상클래스상속받았다면 추상메소드를 구현해야함

ㄴ 바디가 없는 메소드가 있어서 객체 생성은 명시적으로 불가능하고, 자식을 통해 바디를 생성한 메소드를 호출해야한다.

추상클래스와 인터페이스 비교

공통점

  1. 스스로 객체를 생성할 수 없다.
  2. 구현을 목적으로 한다. (상속 관계에서만 존재한다.)

차이점

  1. 다중상속을 지원한다. (인터페이스) / 다중상속 미지원(추상클래스)
  2. (implement super, super1(o)) / (extends super1, super2(x))
  3. 모든 자원이 미완성이다.(인터페이스)

동적 바인딩

실행시 (runtime) 메모리 할당을 하면서, 메소드를 동적으로 연동하는 방식

ㄴ 상황에 따라 변수에 들어가는 타입(값) 이 다른것

ㄴ 장점 : 1, 코드절약    2, 실행속도 향상    3, 행위 은닉

ㄴ [부모] [변수] 에 null 을 넣고 나온 결과에 따라 다른 [자식] 이 들어가는것

<용어정리>

instanceof : 참조변수가 갖고 있는 값의 실제 타입이 어떤건지 알려주는 연산자.

 

'IT★_공부' 카테고리의 다른 글

자바의 Exception  (0) 2022.08.23
자바의 Collection  (0) 2022.08.23
자바의 String  (0) 2022.08.22
자바의 배열 Array  (0) 2022.08.22
자바의 Method  (0) 2022.08.22