클래스와 객체의 정의와 용도
객체 = 속성 + 기능(function)
( 변수 ) + ( 메서드 )
속성 : 명사 ( Ex : Tv )
기능 : 동사 ( Ex : 켜기 , 끄기 , 불륨 높이기 )
인스턴스의 생성과 사용
1. 인스턴스의 생성방법
ㄱ. 클래스명 참조변수명 ; // 객체를 다루기 위한 참조변수 선언
ㄴ. 참조변수명 = new 클래스명() ; // 객체생성 후 , 생성된 객체
2. 인스턴스의 생성방법2
ㄱ. Tv t1 = new Tv();
ㄴ. Tv t2 = new Tv();
ㄷ. T2 = t1;
ㄹ. T1.channel = 7;
ㅁ. System.out.println(t1.channel);
ㅂ. System.out.println(t2.channel);
3. 인스턴스의 생성방법3
ㄱ. 하나의 인스턴스를 여러 개의 참조변수가 가리키는 경우 가능
ㄴ. 여러 개의 인스턴스가 하나의 참조변수를 가르키는 것은 불가능
클래스
Public > Protected > default > private
( 생략 될 시 = default = Same Package = 같은 패키지 내에서만 가능 )
Public Vs public 없는 것의 차이를 알아야 한다.
클래스에서도 위 같은 접근제한자를 알아야 한다.
--------------------------------------------------------------------------------------------------------------
If : java day06.TvTest 를 실행하였을 경우
Stack ( 함수 ) :
변수 : t ;
변수 : tv ;
Heap( new ) : 갈비지모음들이 heap 영역들을 관리한다.
Heap 변수에 접근하기 위해서는 this 사용 , 만약 생략이 되어있다면 this를 사용한 것이다 .
Color , channel , power ( t가 reference 한다 , 참조 )
Null , null, null ( tv가 reference 한다 , 참조 )
Static ( 코드표 ) 메모리에 뜨는 곳 : java.lang , day06.Tvtest.main() ;
. VS .. : .는 현재디렉토리 , .. 는 상위 디렉토리
배열은 JVM이 관리한다 .
// Stack 영역에서 함수( 변수를 선언한다 ) 를 선언하고 , Heap 영역에서는 메서드 기능들이 묶여 있는데 , 변수선언한 것들이 메서드 기능들을 참조한다.
클래스 – 데이터와 함수의 결합
1. 변수 : 하나의 데이터를 저장할 수 있는 공간
2. 배열 : 같은 타입의 여러 데이터를 저장할 수 있는 공간
클래스 – 사용자 정의 타입
1. 프로그래머가 직접 새로운 타입을 정의할 수 있다.
2. 서로 관련된 값을 묶어서 하나의 타입으로 정의한다.
변수와 메서드
1. 선언위치에 따른 변수의 종류
ㄱ. 변수의 선언위치가 변수의 종류와 범위(scope)을 결정한다.
ㄴ. 클래스영역 vs 메서드영역
ㄷ. 클래스변수 , 인스턴스변수 vs 지역변수 ( Stack 함수에 올라간다 , 메모리가 )
ㄹ. 클래스변수 = Static 을 붙인다 , 공유변수이다.
ㅁ. 인스턴스변수 : 인스턴스 값은 메모리에 올려서 써~
ㅂ. Static : 변수 or 메서드 앞에 올 수 있다.
ㅅ. 메소드 앞에 Static이 붙으면 Share하는 Method 이다 // 같은 기능을 원하는 인스턴스는 공유 되어야 한다 , 똑 같은 일을 한다는 것 . Static은 New 하지 않아도 메모리에 올라 간다.
2. 클래스변수와 인스턴스 변수 ( 클래스 변수 Vs 인스턴스 변수 차이를 알아야 한다)
ㄱ. 인스턴스변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있다 . 클래스변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다.
Static 붙인것과 Static 안붙인 것의 차이점을 알아보자
è Static을 쓰면 New를 안써줘도 된다 .
è Static 선언을 안 해주었다면 New를 해 주어야 한다.
메서드 ( Method )
è 메서드를 정의하는 방법 – 클래스 영역에만 정의할 수 있음
è 선언부 + 구현부 ( return ) 선언부와 구현부는 자료타입이 같아야 한다.
Return문
è 메서드가 정상적으로 종료되는 경우
è 메서드의 블록{}의 끝에 도달했을 때
è 메서드의 블록{}을 수행 도중 return을 만났을 때
주의사항
è 반환값이 있는 경우에 모든 상황에서 return값이 존재해야 한다 .
클래스 메서드 Vs 인스턴스 메서드 구별하자 .
// 인스턴스메서드 내에서 주어진 값 or 사용하는 값이 없을 경우 à this 를 써서 member변수를 사용한다 . 그렇기 때문에
P264
Static 했을 경우 New 선언 , import 없이
Static을 안했을 경우 import 한후 à New 선언후
그리고 void 대신 자료형을 주고 자료형이 왔으니까 return값으로 반환을 해주어야 한다.
'Backend > java' 카테고리의 다른 글
간단한 입출금 프로그래밍 ( class AccountTest ) (0) | 2018.08.06 |
---|---|
간단한 입출금 프로그래밍을 만들어 보자 .( class Account ) (0) | 2018.08.06 |
연습문제3 (0) | 2018.08.03 |
연습문제2 (0) | 2018.08.03 |
사용자의 입력값이 yes 일때 "true"를 출력해 보자. (0) | 2018.08.03 |
#IT #먹방 #전자기기 #일상
#개발 #일상