JDK EE
이클립스 JDK 버전 확인후 같은걸로 java -versoin
JAVA - 초반 커피이름으로 지음
특징
객체지향(oop), 가비지컬렉션, 플랫폼 독립성, 멀티쓰레드
- 객체지향언어 특징
코드 재사용성 (상속, 구현)
캡슐화(접근제어자 + 변수)
싱글턴패턴(접근제어자 + 생성자, static 메서드를 통해서 만들어둔 객체의 주소값을 돌려줌)
다형성
- 메모리에 로딩되는 순서
1. calss 정보 로딩
2. staiic 멤버 - static 변수, static method, static{} (static 블럭)
3. main() 실행
- 객체생성(heap 영역) -> 인스턴스멤버(메서드, 변수)로 로딩
- 매서드 호출(call stack) -> method 안에 있는 지역변수 로딩
- class 이름 X
같은 이름 , 숫자시작 x
공백x('_' 언더바사용할것)
특수기호 x('_', '$'언더바 및 달러표시 가능)
키워드 x(만들어져있는 식별자) 대문자로 바꾸면 사용가능
- 기본형변수 & 참조변수 특징
기본형 변수
변수 : 하나의 값을 저장하는 공간.
논리형 boolean / false
문자형 char / unll
정수형 byte, short, int, long / 0, 0L
실수형 float, double / 0.0f , 0.0d
참조변수
생성되는 모든 클래스가 데이터 타입이 된다.
데이터 타입에 대한 생성된 주소를 가진다.
this : 지금 생성하고 있는 객체의 주소값을 저장
super : 조상의 멤버
변수 정의
- 멤버변수 종류와 특징 사용방법에 대해 서술.
기본형 매개변수 - 변수의 값을 읽기만 가능
참조형 매개변수 - 변수의 값을 읽고 변경가능
인스턴스변수 (instance variable)
- 각 인스턴스의 개별적인 저장공간. 인스턴스마다 다른 값 저장가능
- 인스턴스 생성 후 , (참조변수.인스턴스변수명) 으로 접근
- 인스턴스를 생성할 떄 생성되고, 참조변수가 없을 떄 가비지컬렉터에 의해 자동제거됨
클래스변수(class variable)
-같은 클래스의 모든 인스턴스들이 공유하는 변수
- 인스턴스 생성없이 (클래스이름.클래스변수명)으로 접근
- 클래스가 로딩될 떄 생성되고 프로그램이 종료될 떄 소멸
지역변수(local variable)
일반변수
-메서드 내에 선언되며, 메서드의 종료와 함꼐 소멸
- 조건문, 반복문의 블러{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸
- 지역변수는 사용전에 초기화를 해주어야한다
메개변수
매서드 내부에 입력값을 받는 선언된 변수
(입력값에서 선언만 되어있는) 호출할때 생성
초기화 블럭 (initialization block)
명시적 방법
타입 변수 = 초기값 : int a= 10;
선언과 생성을 동시에 한다.
- 인스턴스 초기화 블럭 : {}
생성자에서 공통적으로 수행되는 작업에 사용, 인스턴스가 생성될 떄 마다(생성자보다 먼저) 시행
- 클래스 초기화 블럭 : static{}
클래스 변수의 복잡한 초기화에 사용, 클래스가 로딩될때 실행
※인스턴스변수와 지역변수를 구별하기 위해 참조변수 this 사용
참조변수
this() :같은 클래스의 다른 생성자 호출
인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장됨
모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재
※ super : 조상 클래스의 생성자 호출
this와 같음. 조상의 멤버와 자신의 멤버를 구별하는데 사용
(Object 클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자(같은 클래스의 다른 생성자 또는 조상의 생성자) 호출, 아니면 자동으로 super();생성자의 첫 줄에 삽입됨.
서로 첫번째 줄에 사용해야 하기떄문에 둘이 함께 쓸수 없음
- 메서드 정의
작업을 수행하기 위한 명령문의 집합
어떤 값을 입력받아서 처리하고 그 결과를 돌려준다.
(입력받는 값이 없을 수도 있고 결과를 돌려주지 않을 수도 있다.)
메서드 종류 와 특징 호출 방법 서술
클래스 메서드
- 객체생성없이 ‘클래스이름.메서드이름()’으로 호출
- 인스턴스변수나 인스턴스메서드와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스변수 사용불가
- 메서드 내에서 인스턴스변수를 사용하지 않는다면 static을 붙이는 것을 고려한다.
인스턴스 메서드
- 인스턴스 생성 후, ‘참조변수.메서드이름()’으로 호출
- 인스턴스변수나 인스턴스메서드와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스변수 사용가능
추상 메서드(abstract)
메서드 : 선언부 작성, 구현부는 자성하지 않은 추상메서드
상속받는 자손 클래스에 의해 구현 된다
파이널 메서드
오버라이딩 X( 변경 x)
생성자
- 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
- 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용
- 몇가지 조건을 제외하고는 메서드와 같다
- 모든클래스에는 반드시 하나 이상의 생성자가 있어야 한다.
* 인스턴스 초기화 - 인스턴스 변수에 적절한 값을 저장하는 것.
1. 리턴타입 x (voidX)
2. class 이름과 같아야 함
기본생성자(default constructor)
- 매개변수가 없는 생성자
- 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가
ex) 클래스 이름 () {} // 내용 x
제어자
- 클래스, 변수, 메서드 선언부에 사용 부가적인 의미 부여
- 제어자는 크게 접근 제어자, 그외 제어자
- 하나의 대상에 여러 개의 제어자를 조합 사용, 접근제어자는 하나만사용
static 사용가능한곳 : 멤버변수, 메서드, 초기화 블러
final " : 클래스, 메서드 = 변경 x
멤버변수, 지역변수 = 상수
-final 인스턴스 변수의 경우 생성자에서 초기화 할수 있다.
abstract(추상) 클래스: 클래스 내에 추상메서드 선언
메서드 : 선언부 작성, 구현부는 자성하지 않은 추상메서드
자손클래스에 의해 구현(오버라이딩)
접근 제어자(access modifier)
- 멤버 또는 클래스에 사용, 외부로부터 접근 제어(데이터 보호, 불필요한내용 뺴고 내부적으로만 사용되는 부분을 감추기 위해) 캡슐화
private : 같은 클래스 내에서만 접근 가능
default : 같은 패키지 내에서만 접근
protected : 같은 패키지, 다른패키지 자손클래스 접근가능
public : 접근 제어 없음
※class 앞에 public , defaul만 사용 가능
오버로딩
(overloading) - 기존에 없는 새로운 메서드를 정의하는 것(new)
조건
- 매서드의 이름이 같아야함
- 매개변수의 개수 또는 타입이 달라야함.
- 매개변수는 같고 리턴타입이 다른 경우는 오버로딩X
오버라이딩
(overriding)- 상속받은 메서드의 구현부 내용을 변경하는 것 (change, modify)
조건
- 선언부가 같아야 함(이름, 매개변수, 리턴타입)
- 접근제어자를 좁은 범위로 변경x
- 조상클래스의 메서드보다 많은 수의 예외를 선언X
상속(inheritance)
기존의 클래스를 재사용해서 새로운 클래스 작성
두 클래스를 super과 sub으로 관계를 맺음
sub은 super의 모든 멤버를 상속
ex) class sub클래스 extends super클래스
Object - 모든클래스의 최고 super
oop(Object Oriented Programming)
객체지향프로그램 (다형성polymorphism)
- 여러가지 형태를 가질수 있는것.
한가지 타입의 참조변수로 여러 타입의 객체를 참조할 수 있다는 것이다.(단 상속관계일때 )
다형성(polymorphism)
- 하나의 참조변수로 여러객체를 참조가능
- 하나의 참조변수로 여러 타입의 객체를 참조할 수있는것
(조상타입의 참조변수로 자손타입의 객체를 다룰 수있는것)
조상타입 참조변수 -> 자손타입 인스턴스 참조 O
자손타입 참조변수-> 조상타입 인스턴스 참조 X
interface
- class와 동급
- 상수와 추상메서드만 가질 수 있다.
- 생성자 없음 -> 객체생성X
- 일반 class에서 *구현 해서 씀
*구현 : implements -> extends(상속) + overriding
- 다형성을 이용해 객체 생성.
- 최고 조상이 없다.
-(interface)다중상속이 가능하다.
형변환
기본 - > 기본 (0)
기본 - > 참조 (X)
참조 - > 참조(X) , 단상속관계일때만 허용
super -> (명시) sub
sub -> super
-> interface도 형변환 가능
배열 : 같은 타입의 여러개의 값을 하나로 묶어서 저장하는 공간
ex) ch new char[4];
너무 길어서 2장으로 넘김.....
( 수정중)
객체지향
※ 코드의 재사용성
클래스 - 객체를 정의
용도 - 객체를 생성 하는데 사용
객체 - 실제로 존재 (주소로 찾아감)
용도 - 속성과 기능에따라 다름
ex) 건물 설계도(클래스) -> 건물 (Object) 객체
절차지향 (처음부터 끝까지 순서대로 읽는것)
> 객체지향 (필요한 코드만 을(를) 불러서 사용)
> 객체 = 인스턴스
> 데이터 저장공간 - 변수, 배열, 컬렉션 (객체 저장)
인터페이스 - List(순서유지, 중복 O)
set (순서 x , 중복X)
map - >key 순서x, 중복x
value > key를이용 get
static 변수 : class 변수 -> 선언 방법 : class명, 변수명
class 변수 인스턴스 변수 : 멤버 변수 -> 객체 생성 후 , 참조변수,변수명
지역변수 - method 내에 선언
리턴문과 반환값이 타입이 같아야 가능
지역변수는끝나고 사라짐
Constructor
object 생성될때 자동적으로 단 한번 호출