|
|
제목:강남역 사거리
객체 지향 이란?
보여지는 프로그램에 있어 각종 소진을 최소화 하고 효율적인 사용을 유지하기 위해서
1.재사용성
2.유지보수
3.중복제어
객체란?
실제로 존재하는 것(보이는것)
유형 객체-물건
무형 객체-프로그래밍
jdk란
기존프로그래머들이 만들어 놓은 class를 불러서 사용 하는것
인스턴스화:변수(값)+메서드(행위)
인스턴스:정의해놓은 것들을 불러서 사용
인스턴스의 생성과 사용
클래스명 변수명;
변수명 =new 클래스명();
작은 의미로
String 명;
명=가져올 데이터
String은 문장의 스펠링을 배열로 저장하는 String클래스를 불러와서 사용하는 개념
각각 인스턴스 사용시 별도로 사용 가능하나
각각의 인스턴스를 맞추면 하나의 것으로 통합됨
하나의 인스턴스를 여러 개의 참조변수가 가리키는 경우(O)
여러개의 인스턴스를 하나의 참조변수가 가르키는 경우(X)
클래스란?
데이터와 함수의 결합
1.변수-하나의 데이터를 저장할 수 있는 공간 (String,int)
2,배열-같은 종류의 여러데이터를 하나의 집합으로 저장할 수 있는 공간
3.구조체-서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
4.클래스-데이터와 함수의 결합(구조체+함수)
ex)타임 클래스
시,분,초를 int 정수값으로 저장하고
각 리미트 시는 24시 분,초는 60초로 제하고 각제한값을 넘어갈시
상위 int값을 +1의 방식
|
|
변수와 메서드
변수
1.클래스변수-클래스영역-클래스가 실행시
2.인스턴스변수-클래스영역-선언된 인스턴스에 접속시
3.지역변수-클래스 이외의 영역-변수 선언문이 수행시
인스턴스변수
불러올때 마다 생성되기 때문에 독립된 저장공간을 가진다.
클래스변수(static변수,공유변수)
클래스변수 선언-static 인스턴스 변수
인스턴스변수 선언 후 클래스변수 선언해야하지만 다른방법으로 클래스명.클래스변수 의 형식으로 도 사용
클래스가 로딩될 때에 생선되어 프로그램이 종료시까지 유지됨
public static 은 프로그램 어디서나 접근 할 수 있는 전연변수의 성격을 가짐
메서드내에 선언되어 메서드내에서만 사용가능
{}사이에서만 사용가능 ex) for{지역변수}
클래스변수>인스턴스변수>지역변수
클래스변수는 모든 불러온곳에서 사용가능하기 때문에 공유가 가능하다
인스턴스변수는 생선될때마다 생선되므로 인스턴스마다 각기 다른 값을 유지 다른곳에 영향을 굳이 건드리지 않는이상 없음
메서드란
어떤 작업을 수행하기 위한 명령문의 집합 값을 받아 처리하고 결과를 돌려준다.
경우에는 입력값이 없거나 결과를 반환하지 않을수 있다.
반복적인 사용이 있을때 사용하기 위해서 사용
반복사요코드를 메서드로 작성해 놓고 필요한 곳에서 호출만함
유지보수가 쉽기 떄문에 사용
1.하나의 메서드는 한가지만 기능을 수행하도록 작성
2.반복적으로 수행되어야 하는 여러 문장을 하나의 메서드로정의해 놓으면 좋다.
3.관련된 여러 문장을 하나의 메서드로 만들어 놓는게 좋다.
메서드 구조
리턴타입 메서드이름(타입 변수명[입력값],...){수행할 코드}
리턴타입에 void 리턴값을 없을때 선언
메서드가 정상적으로 종료되는 경우는 다음과 같이 두가지가 있다.
-메서드의 블럭{}내의 마지막 문장까지 수행했을때
-매서드의 블럭{}내에 있는 문장을수행중 return문을 만났을때
return문
1.반환값이 없을떄 return;
2.반환값이 있을경우 return 반환값;
주의할점
받는 부분의 타입은 일치해야 한다.
반환값은 무조건 넘겨줘야함 그값이 원하는 값이 아닐지라도.(if조건절로 반환값을 선택적으로 보낼수 있음)
return값은 1번만 선언하는게 좋다(인스턴스로 선언후 처리값을 인스턴스변수로저장후 그변수값을 return)
return값을 안쓰는 방법
메서드를 호출후
void 명(값1,값2,배열 배열명){ 배열=수행코드}
불러온 클래스에서 배열을 생성,초기화후
배열을 전달후 저장된 값을 불러옴
메서드 호출
참조변수.메서드이름(); 보내는 값이 없을시
참조변수.메서드이름(값1,값2,...)
반환되는타입 명=참조변수.메서드이름(값)
JVM의 메모리구조
1.메서드 영역
클래스사용시 JVM은 해당클래스의 클래스 파일을 읽어서 분석 후 정보를 저장 클래스변수 포함
2.힙(heap)
인스턴스가 생성되는 공간 생선되는 인스턴스는 모두 이곳에 생선,인스턴스변수 포함
3.호출스택(call stack,execution stack)
메서드이 작업에 필요한 메모리 공간을 제공 지역변수 들과 연산에 중간결과등을 저장 그리고 매서드가 작업을 마칠시 메모리공간은 반환되어 비워짐
메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에할당
메서드가 수행이 끝나면 메모리는 반환 스택에서 제거
호출스택의 제일 위에 있는 매서닥 현재 실행중인 메서드
아래에 있는 메서드가 바로 위의 메서드를 호출한 매서드
기본형 매개변수-변수의 값을 읽기만
참조형 매개변수-변수의 값을 읽고 변경가능
값을 넘길떄 값만 불러오는지 그클래스를 불러오는지 차이
재귀호출
장점은 직관적 바로바로 이해가능 코드가 간결
단점은 많은 함수의 호출로 인한 오버헤드의 문제점이있음
특정영역을 지정된 색으로 채울떄 재귀호출을 사용 같은 조건으로 계속 사용할때 but 자칫잘못하면 무한으로 돌게됨
클래스 매서드와 인스턴스 메서드
클래스를 설계시 모든 인슨턴스에서 공통적으로 사용해야하는것에 static을 붙인다.
클래스 변수는 인스턴스를 생성하지도 않아도 상용할수 있다.
클래스 매서드는 인스턴스 변수를 사용할수 없다.
매서드 내에서 인스턴스변수를 사용x static을 붙이는 것을 고려함
메서드에 static을 하면 클래스매서드
안하면 인스턴스매서드
클래스 멤버(클래스변수,클래스 메서드)와 인스턴스 멤버(인스턴스변수,인스턴스 메서드)간의 참조와 호출
클래스는항상 존재 인스턴스는 사용시에 존재 하는지 안하는지 확인
'코딩 > Java' 카테고리의 다른 글
| 오버라이딩(overriding) (0) | 2016.03.16 |
|---|---|
| 상속(inheritance) (0) | 2016.03.16 |
| 변수의 초기화 (0) | 2016.03.14 |
| 생성자(constructor) (0) | 2016.03.14 |
| 메서드 오버로딩(method overloading) (0) | 2016.03.14 |