JavaSE

[정리]객체지향1

알 수 없는 사용자 2015. 8. 17. 16:14

객체지향이란!?


 : 기본개념은 실제 세계를 사물(객체)로 이루어져 있으며, 발생하는 사건들은 사물간의 상호작용이다. 라는 것이다.


객체지향의 가장 큰 특징

1. 상속

2. 캡슐화

3. 추상화


객체지향의 장점

1. 코드 재사용이 높다

2. 코드의 관리가 용이하다.

3. 신뢰성이 높은 프로그래밍을 가능하게 한다.


클래스와 객체


1. 클래스란!? 

 

객체를 정의해놓은것 (Object), 객체의 설계도 또는 틀

클래스의 정의 : 객체를 정의해 놓은것

클래스의 용도 : 객체를 생성


2. 객체란? 사전적 의미로는 실제로 존재하는 것


객체의 정의 : 실제로 존재하는 것.

객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다르다.


인스턴스란!


 : 클래스로 부터 객체를 만드는 과정을 클래스 인스턴스화 라한다.


1. 속성 과 기능


속성 : 멤버변수, 특성,필드, 상태

기능 : 메서드, 행위, 함수


2. 인스턴스 생성 및 사용


생성방법 :

클래스명 변수명 = new 클래스명();


 **인스턴스는 참조변수를 통해서만 다룰수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.**


--참고--


변수의 정리


 변수의 종류 

 선언위치 

 생성시기 

 클래스 변수 

 클래스 영역 

 클래스가 메모리에 올라갈 떄 

(Static이용)=공유변수

 인스턴스변수

 클래스 영역

 인스턴스가 생성되었을 때 

(new에의한 활성화)

 지역변수 

 클래스 영역 이외 영역(메서드,생성자..) 

 변수 선언문이 수행되었을 때 

({ }내에서만 사용가능)


메서드


 : 어떤 작업을 수행하기 위한 명령문의 집합


메서드 장점


1. 하나의 메서드는 한가지 기능만 수행하도록

2. 반복적으로 수행되어야 하는 여러 문장을 하나의 메서드로 정의

3. 관련된 여러 문장을 하나의 메서드로 만들어 놓음.


**참고**

1. Static이 있을 경우 : 클래스멤버(=공통적으로 사용가능)

-> 인스턴스를 생성 하지 않아도 사용할수 있다.

-> 인스턴스 멤버는 클래스멤버로 전환이 가능 하지만, 클래스 멤버는 인스턴스멤버로 전환이 불가하다.


2. Static이 없을 경우 : 인스턴트 멤버.


Return문


  : Return타입은 반환값(자료형)이 일치해야한다.

  : 메서드가 종료 될 때 return문이 있을경우 값을 반환 하여 준다


 **Call by Reference, value**

1.Call by Reference : 매개 변수의 원래 주소에 값을 저장 하는 방식

2.Call by Value : 주어진 값을 복사하여 처리하는 방식, 메소드 내의 처리 결과는 메소드 밖의 변수에는 영향이 없다.



메서드 호출


참조변수.메서드이름();

참조변수.메서드이름(값1, 값2..) // 메서드에 선언된 매개변수가 있을경우

 와 같은 형태로 사용해야 된다.


메서드 오버로딩

 : 한 클래스 내에 같은 이름의 메서드를 여러 개 정의 하는것 을 의미.


오버로딩 조건!


1. 메서드 이름이 같아야 한다.

2. 매개변수 개수 or 타입이 달라야한다

3. 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.


오버로딩 장점!

 : 같은 이름으로 여러개를 만들 수 있어, 이름을 작명할 경우의 수가 줄어든다.


**참고**

오버로딩,오버라이딩 개념정리!


1.오버로딩 : 같은 이름의 메서드를 여러개 정의 가능. (단, 조건이 충족되어야 한다)


2. 오버라이딩 : 상속에서 나온 개념으로, 상위 클래스의 메소드를 하위 클래스에서 재정의 하여 사용하는것.



생성자


 : 인스턴스 초기화 메서드, 초기화 작업에 주로 사용!


생성자 조건


1. 생성자의 이름은 클래스의 이름과 같아야 한다.

2. 생성자는 리턴 값이 없다.


생성자에서 다른 생성자 호출 방법

1.this. 

-> 인스턴스 멤버 호출시 자주 사용하게 되며, 인스턴스 주소가 저장

2.this();

-> 다른 생성자를 호출할 때 사용한다.


**참고**

1. 클래스 변수 초기화 시점 : 클래스 처음 로딩될때 , 단 한번 초기화

-> 클래스 변수 초기화 순서 : 기본값 -> 명시적초기화 -> 클래스 초기화 블럭


2. 인스턴스변수 초기화 시점 : 인스턴스가 생성될 때 마다, 인스턴스별로 초기화

-> 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자