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.내가 원하는 상황에서 값을 컨트롤 할 수 있음. (유효성 검사 )
- 접근제어
getter : 읽기전용 , setter: 쓰기전용으로 접근을 제어함.
상속
extends : class가 class를 상속할 경우 : 다중상속 불가.
implement : class가 interface를 상속할 경우 : 다중상속 가능.
인터페이스란?
일종의 추상클래스로, 구현된 것은 없고 밑그림만 있는 설계도.
일반 메소드와 변수를 가질 수 없고, 추상메소드와 상수만을 가질 수 있다.
Abstract class
추상 클래스 : 추상 메소드를 하나이상 가진 클래스. (extends)
추상 메소드 : 선언만 되어있는 바디가 없는 메소드.
ㄴ 빈공간 클래스로 상속받은 자식이 구현해야하는 메소드
ㄴ 자식이 일반클래스이고 추상클래스를 상속받았다면 추상메소드를 구현해야함
ㄴ 바디가 없는 메소드가 있어서 객체 생성은 명시적으로 불가능하고, 자식을 통해 바디를 생성한 메소드를 호출해야한다.
추상클래스와 인터페이스 비교
공통점
- 스스로 객체를 생성할 수 없다.
- 구현을 목적으로 한다. (상속 관계에서만 존재한다.)
차이점
- 다중상속을 지원한다. (인터페이스) / 다중상속 미지원(추상클래스)
- (implement super, super1(o)) / (extends super1, super2(x))
- 모든 자원이 미완성이다.(인터페이스)
동적 바인딩
실행시 (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 |