인터페이스란?

일종의 추상클래스, 추상클래스보다 추상화 정도가 높다.

실제 구현된 것이 전혀 없는 기본설계도.

추상메서드와 상수만을 멤버로 가질 수 있다.

인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.

미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용된다.


작성

'class'대신 'interface'를 사용한다는 것 외에는 클래스 작성과 동일하다.

모든 멤버변수는 public static final 이어야하며 생략가능

모든 메서드는 public abstract 이어야 하며 생력가능


상속

상속가능, 다중상속가능


구현

인터페이스를 구현하는 것은 클래스를 상속받는 것과 같다. extends 대신 implements 를 사용한다.

인터페이스에 정의된 추상메서드를 완성해야 한다.

상속과 구현이 동시에 가능하다.


장점

1. 개발시간 단축

2. 표준화가능

3. 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.

4. 독립적인 프로그래밍이 가능



'Java' 카테고리의 다른 글

추상클래스(abstract class)  (0) 2014.12.16
this와 super  (0) 2014.12.16
상속(Inheritance)  (0) 2014.12.16
오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
추상클래스란?

추상클래스는 미완성 설계도

추상메서드를 포함하고 있는 클래스

일반메서드가 추상메서드를 호출할 수 있다.

완성된 설계도가 아니므로 인스턴스를 생성할 수 없다.

다른 클래스를 작성하는 데 도움을 줄 목적으로 작성한다.


추상메서드란?

선언부만 있고 구현부가 없는 메서드

꼭 필요하지만 지손마다 다르게 구현될 것으로 예상되는 경우에 사용

추상클래스를 상속받는 자손클래스에서 추상메서드의 구현부를 완성해야 한다.


추상클래스의 작성

여러클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통부분을 뽑아서 만든다.



'Java' 카테고리의 다른 글

인터페이스(interface)  (0) 2014.12.16
this와 super  (0) 2014.12.16
상속(Inheritance)  (0) 2014.12.16
오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16

this - 인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어 있음. 모든 인스턴스 메서드에 지역변수록 숨겨진 채로 존재

super - this와 같음. 조상의 멤버와 자신의 멤버를 구별하는데 사용. 

'Java' 카테고리의 다른 글

인터페이스(interface)  (0) 2014.12.16
추상클래스(abstract class)  (0) 2014.12.16
상속(Inheritance)  (0) 2014.12.16
오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16

상속이란

기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것.

두 클래스를 조상과 자손으로 관계를 맺어주는 것.

자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)

자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다) 

단일 상속만을 허용한다.

Object 클래스는 모든 클래스의 최상위 클래스이며 조상이 없는 클래스는 자동적으로 Object 클래스를 상속받게된다.


상속관계

공통부분은 조상에서 관리하고 개별부분은 자손에서 관리한다.

조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다.

is a 관계 : ~은 ~이다.


포함관계

한 클래스의 멤버변수로 다른 클래스를 선언하는 것

작은 단위의 클래스를 먼저 만들고, 이 들을 조합해서 하나의 커다란 클래스를 만든다.

has a 관계 : ~은 ~을 가지고 있다.


'Java' 카테고리의 다른 글

추상클래스(abstract class)  (0) 2014.12.16
this와 super  (0) 2014.12.16
오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
변수의 종류  (0) 2014.12.15

오버로딩

-하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는것을 메서드 오버로딩, 오버로딩(method overloading)이라고 한다.

-오버로딩의 조건

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

 매개변수의 개수 또는 타입이 달라야 한다.

 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.

=> 기존의 없는 새로운 메서드를 정의하는 것(new)



오버라이딩

-조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 오버라이딩(overriding)이라고 한다.

-오버라이딩의 조건

선언부가 같아야한다.(이름, 매개변수, 리턴타입)

접근제어자를 좁은 범위로 변경 할 수 없다.

조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

=> 상속받은 메서드의 내용을 변경하는 것(change, modify)

'Java' 카테고리의 다른 글

this와 super  (0) 2014.12.16
상속(Inheritance)  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
변수의 종류  (0) 2014.12.15
클래스의 정의  (0) 2014.12.15

- 메서드 영역(Method Area)

클래스 정보와 클래스 변수가 저장되는 곳


- 호출 스택(Call Stack)

메서드의 작업공간. 메서드가 호출되명 메서드 수행에 필요한 메모리공간을 할당받고 메서드가 종료되면 사용하던 메모리를 반환한다.


- 힙(Heap)

인스턴스가 생성되는 공간. new 연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성된다.

'Java' 카테고리의 다른 글

상속(Inheritance)  (0) 2014.12.16
오버로딩 vs 오버라이딩  (0) 2014.12.16
변수의 종류  (0) 2014.12.15
클래스의 정의  (0) 2014.12.15
객체지향언어의 특징  (0) 2014.12.15


변수의 종류 

선언위치 

생성시기 

 클래스 변수

 클래스 영역

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

인스턴스 변수 

 인스턴스 생성시

 지역 변수

메서드 영역 

변수 선언문 수행시 


-인스턴스 변수

각 인스터스의 개별적인 저장공간. 인스턴스마다 다른 값 저장가능

인스턴스 생성 후, '참조변수.인스턴스변수명'으로 접근

인스턴스를 생성할 때 생성되고, 참조변수가 없을 때 가비지 컬렉터에 의해 자동제거됨


- 클래스 변수

같은 클래스의 모든 인스턴스들이 공유하는 변수

인스턴스 생성없이 '클래스이름.클래스변수명'으로 접근

클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸


- 지역 변수

메서드 내에 선언되며, 메서드의 종료와 함께 소멸

조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸



'Java' 카테고리의 다른 글

오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
클래스의 정의  (0) 2014.12.15
객체지향언어의 특징  (0) 2014.12.15
변수의 타입(Data Type)  (0) 2014.12.15

1. 데이터와 함수의 겹합

변수 -> 배열 -> 구조체 -> 클래스


2. 사용자 정의 타입

 - 프로그래머가 직접 새로운 타입을 정의할 수 있다.

 - 서로 관련된 값을 묶어서 하나의 타임으로 정의한다.

'Java' 카테고리의 다른 글

오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
변수의 종류  (0) 2014.12.15
객체지향언어의 특징  (0) 2014.12.15
변수의 타입(Data Type)  (0) 2014.12.15

1. 기존의 프로그래밍언어와 크게 다르지 않다

 - 기존의 프로그래밍 언어에 몇가지 규칙을 추가한 것일 뿐이다,


2. 코드의 재사용성이 높다.

 - 새로운 코드를 작성 할 때 기존의 코드를 이용해서 쉽게 작성할 수 있다.


3. 코드의 관리가 쉬워졌다.

 - 코드간의 관게를 맺어줌으로써 보다 적은 노력으로 코드변경이 가능하다.


4. 신뢰성이 높은 프로그램의 개발을 가능하게 한다.

 - 제어자와 메서드를 이용해서 데이터를 보호하고, 코드의 중복을 제거하여 코드의 불일치로 인한 오류를 방지 할 수 있다.

 

'Java' 카테고리의 다른 글

오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
변수의 종류  (0) 2014.12.15
클래스의 정의  (0) 2014.12.15
변수의 타입(Data Type)  (0) 2014.12.15

1. 기본형(Primitive type)

- 8개

 boolean

char 

byte 

short 

int  

long 

float 

double 

 논리형

문자형 

정수형 

정수형 

정수형 

정수형 

실수형 

실수형 

 1byte

 2byte

 1byte

 2byte

 4byte

 8byte

 4byte

 8byte

- 실제 값을 저장


2. 참조형(Reference type)

- 기본형을 제외한 나머지(String, System등)

- 객체의 주소를 저장(4byte)

'Java' 카테고리의 다른 글

오버로딩 vs 오버라이딩  (0) 2014.12.16
JVM의 메모리 구조  (0) 2014.12.16
변수의 종류  (0) 2014.12.15
클래스의 정의  (0) 2014.12.15
객체지향언어의 특징  (0) 2014.12.15

+ Recent posts