본문 바로가기

JAVA

(21)
클래스의 구성 멤버(필드) 필드(Field) 객체의 데이터가 저장되는곳 생성자(Constructor) 객체 생성시 초기화 역할 담당 메소드(Method) 객체의 동작에 해당하는 실행 블록 클래스에는 객체가 가져야 할 구성 멤버가 선언된다, 구성 멤버에는 필드, 생성자 메소드가 있다. 이 구성 멤버들은 생략되거나 복수 개가 작성될수 있다. 필드는 객체의 고유 데이터 ,부품 객체, 상태 정보를 저장하는 곳이다. 선언 형태는 변수와 비슷하지만 필드를 변수라고 부르지는 않는다. 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다. 생성자는 new 연산자로 호출되는 특별한 중괄호{} 블록이다. 생성자의 역할은 ..
객체 생성과 클래스 변수 클래스를 선언한 다음 컴파일을 했다면 객체를 생성할 설계도가 만들어진셈이다. 클래스로 부터 객체를 생성하는 방법은 다음과 같이 new연산자를 사용하면 된다. new는 클래스로 부터 객체를 생성시키는 연산자이다. new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가지고 있다. new 연산자로 생성된 객체는 메모리 힙(heep)영역에 생성된다. 현실 세계에서 물건의 위치를 모르면 물건을 사용할수 없듯이, 객체 지향 프로그램에서도 메모리 내에서 생성된 객체의 위치를 모르면 객체를 사용할수 없다. 그래서 new 연산자는 힙영역에 객체를 생성시킨후 객체의 주소를 리턴하도록 되어 있다. 이 주소를 참조 타입인 클래스 변수에 저장해 두면 , 변수를 통해 객체를 사용할수 있다. 이코드가 실행되면 메모리..
객체와 클래스 현실에서 객체는 갑자기 하늘에서 떨어지는 것이 아니라 설계도를 바탕으로 만들어진다. 메모리에서 사용하고 싶은 객체가 있다면 우선설계도로 해당객체를 만드는 작업이 필요하다. 자바에서는 설계도가 클래스이다. 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다. 클래스로 부터 만들어진 객체를 해당 클래스의 인스턴스라고 한다. 객체 지향 프로그래밍 개발은 세 가지 단계가 있다. 첫번째 단계는 클래스를 설계해야 한다. 두번째 단계는 설계된 클래스를 가지고 사용할 객체를 생성해야한다. 그리고 마지막 단계는 생성된 객체를 이용하는것이다. 클래스 선언 이제 부터 클래스를 선언하는 방법에 대해 알아볼것이다. 사용하고자 하는 객체를 구성했다면 , 그 객체의 대표 이름을 하나 결정하고 이것을 클래스 이름으로 한다..
Thread 생성 Thread 생성하는 2가지 방법 # Thread 클래스로부터 직접 생성 java.lang.Thread 클래스로부터 작업 스레드 객체르 직접 생성하려면 다음과 같이 Runnable을 매개값으로 갖는 생성자를 호출애햐합니다. Runnable은 작업 스레드가 실행할 수 있는 코드를 가지고 있는 객체라고 해서 붙여진 이름이다. Runnable은 인터페이스 타입이기 때문에 구현 객체를 만들어 대입해야한다. Runnable에서는 run() 메소드 하나가 정의되어 있는데 구현 클래스는 run() 을 재정의 해서 작업 스레드가 실행할 코드를 작성해야 한다. Runnable은 작업 내용을 가지고 있는 객체이지 실제 스레드는 아니다. Runnable 구현 객체를 생성한후,이것을 매개값으로 해서 Thread 생성자를 호출..
다형성(Polymorphism) 자동차는 타이어 타입으로 한국타이어와 금호타이를 사용하지만 각타이어의 성능은 다르게 나온다 다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할수 있는 성질을 말한다. 코드 측면에서 보면 향성은 하나의 타입에 여러객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 자바는 다향성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용한다 부모 타입에는 모든 자식 객체가 대입될수 있고, 인터페이스 타입에는 모둔 구현 객체가 대입될수 있다.다형성의 효과로 객체는 부품화가 가능하다.
상속(InherItance) 일반적으로 상속은 부모가 가지고 있는 재산을 자식에게 물려주는 것을 말한다. 자식은 특별한 노력없이 물려준 재산을 갖게 된다. 객체 지향 프로그래밍에서도 부모 역할의 상위 객체와 자식 역할의 하위객체가 있다. 상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여준다. 예를 들어 필드1 ,필드 2, 메소드 1, 메소드 2 를 가지는 객체를 설계한다고 생각해보자. 4개를 모두 처음부터 설계하는 것보다는 이미 필드1과 메소드1 이 있는 객체가 있다면 이것을 상속하고, 필드2와 메소드2만 설계하는것이 보다 효율적이고 개발 시간을 절약시켜준다.상속은 상위 개체의 수정으로 모든 하위 객체들의 수정효..
OOP 현실세계 에서 어떤 제품을 만들때 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들듯이, 소프트웨어를 개발할 때에도 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programming) 이라고 한다 그러면 객체란? 객체란 물리적으로 존재하거나 추상적으로 생각할수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. 예를 들어 물리적으로 존재하는 자동차, 자전거, 책, 사람과 추상적인 학과, 강의, 주문등이 모두 객체가 될수 있다. 객체는 속성과 동작으로 구성되어 있는데 예를 들어 사람은 이름, 나이등의 속성과 웃다, 걷다 등의 동작이 있다. 자바는 이..
람다식(3) 로컬 변수 사용 람다식은 메소드 내부에서 주로 작성되기 때문에 로컬 익명 구현 객체를 생성시킨다고 봐야한다. 람다식에서 바깥 클래스의 필드나 메소드는 제한 없이 사용할 수 있으나 메소드의 매게변수 또는 로컬 변수를 사용하면 이 두 변수는 final 특성을 가져야 한다. 따라서 매게 변수 또는 로컬 변수를 람다식에서 읽는 것은 허용되지만, 람다식 내부 또는 외부에서 변경할 수 없다. public class UsingLocalVariable{ void method(int args) { // arg는 final 특성을 가짐 int localVar = 40; //localVar는 final 특성을 가짐 //arg =31; //final 특성때문에 변경불가 //localVar = 31; // final 특성떄문에..