객체:
인스턴스와 메소드를 포함 한 개념->클래스로부터 만들어진 실체 or 변수
클래스는 타입이다.--> 클래스는 타입이기때문에 int 와 같다
사용할 준비가 완료된 하나의 물건 또는 인스턴스다.
클래스를 만들어 놓으면 그냥 타입이다 라고 알려만 주는것이다.
Class A --> A a --> a 는 객체이다. 즉 클래스에의하여 만들어진 객체 a 이다.
만들어지기전 인스턴스화가 일어난다.
타입을 사용하려면 만들어줘야한다. 즉 a 라는 객체를 만들어야한다. 이때 일어나는것이 인스턴스화가 일어났다 라고 한다.
인스턴스화:
--> 메모리 공간에 구체화 또는 실체화 시키는것이다.
--> 클래스가 객체는 아니다 왜? 아직 인스턴스화가 되지않았기때문이다.
--> 같은 클래스 타입의 객체를 여러개의 객체를 만들수있다. 만들어진 주소는 다르다.
클래스의 정의 및 정의와 특성 :
--> 데이터와 기능 동작으로 이루어진 사용자 정의 타입이다.
특성:
정보 은닉
--> 데이터를 숨기는것 : 외부에서 보지못하도록 하는것, 정보를 숨기는것
--> 클래스의 독립성을 유지시킬수있다. 외부에서는 이용만 가능하다.
캡슐화
--> 정보은닉때문에 캡슐화가 된다.외부에 공개할것은 공개하고 , 공개하지않을것은 숨기는것, 비슷한 것 들 끼리 감싸놓은 상태에서,
인터페이스:
--> 사용자와의 약속(함수의 프로토타입과 같은것,) 이러한 인터페이스만 공개하는것,
다형성
--> 전구에서 소켓부분과 동일함, 소켓만 동일하다면 모양은 상관없는것처럼
--> 오버라이드,순가상,추상화, 등등 과같다.
--> 동일한부모에서 태어난 자식들과같은것,
재사용성
--> 동일한 부품에 하나의 또다른 부품을 맞춤으로써 새로운 부품을 만들어 내는것
--> 하나의 타입을 이용하여 새로운 타입으로 만드는것
추상화
--> 효율적으로 클래스를 만들기 위하여 공통된 성질이나 특성들을 구조나 설계를 일반화시키면서 구체화 시키는 키는것이다.
인터페이스란:
--> 리모컨의 버튼같은것, 리모컨에서 버튼같은것들, 사용자와 실질적으로 맞닿는 접점들이다.
--> 사용자와의 약속된 부분, 리모컨에서 전원버튼은 꺼진다 와같은것,
접근권한 지정자 종류:
public: 쉬운 걸이나 보이 (열린 좌물쇠)
private: 도도한 걸이나 보이 (잠긴 자물쇠)
protected: 부모자식간 접근을 허용함 ,외부에는 private 이다.
인스턴스와 객체의 차이점:
생성자란:
--> 클래스가 인스턴스화 될때 호출되는 특별한 함수이며, 반환값은 없으며, 클래스와 동일한 이름을 가지며 시스템 내부에서 자동으로, 함수 오버로딩 가능, 객체 생성시 동일한 타입이 존재하여야한다.
하나이상의 생성자가 존재한다면 디폴트 생성자를 제공하지않는다.
소멸자
--> 객체가 소멸되기전 호출되는 함수, 반환값이 존재하지않고, 클래스 이름과 동일함
복사생성자란:
--> 동일한 객체를 복사해서 생성하는 생성자이다.
클래스에서 기본적으로 제공되는것:
--> 일반 생성자,대입연산자,디폴트생성자 소멸자, 캐스팅 연산자, 복사 생성자,
virtual :
--> 가상함수 테이블이 만들어진다. 4바이트의 가상함수 테이블이 존재한다.
--> 오버라이딩을 하기위한 하나의 기술이다.
가상함수:
--> 오버라이딩을 해도되고 안해도 되는것
--> 키워드는 존재하지만 자식에서 재정의 , 오버라이딩 할수있도록 한것
순가상 함수:
--> 자식에서 무조건 재정의 하도록 하는것
--> 이것을 포함한 클래스는 절대로 인스턴스화 할수없다
함수 오버라이딩
--> 함수오버라이딩: 버츄얼 키워드가 존재하고 반환값과 시그니쳐 함수이름 이 동일하여야한다.