SlideShare a Scribd company logo
1 of 24
Download to read offline
JAVA CLASS & OBJECT
작성자 : 홍효상
이메일 : hyomee@naver.com
소스 : https://github.com/hyomee/JAVA_EDU
프로그램은 사람이 이해하는 코드를 작성.
느려도 꾸준하면 경기에서 이긴다.
Content
소스 : https://github.com/hyomee/JAVABASIC
5. Class & Object & Modifier
1. 객체지향프로그램(OOPL)
2. Class
3. Field
4. Method
5. Constructor
6. Package
7. 자바 제어자
1. 객체지향 프로그램 ( OOPL )
5. Class & Object
• 객체:모든데이터,객체의상태(state)와행동(behavior)을 구체화하는형태의프로그래밍이바로객체지향프로그래밍
• 논리적클래스,객체,메소드,관계및기타프로세스를소프트웨어및애플리케이션설계를바탕으로
• 객체지향프로그래밍언어의프로그래밍구문이하나이상의객체를기반으로
• 데이터추상화,상속,캡슐화,클래스생성및관련개체를포함하여기본개체지향기능을나타내야언어.
“ 객체 지향 프로그래밍(OOP) 모델을 기반으로 하는 고급 프로그래밍 언어 “
5-1. 객체지향
객체지향프로그램언어(Object-Oriented Programming Language )
왜Class가만들어졌을까?
• Data관점
-절차적언어문법으로복잡한
Data를 표시에한계있음
변수
베열
구조채
클래스
운전자가 자동차에 탑승 한다.
• 처리관점
-순차적으로처리하는기능중심
의프로그램은프로그램이복잡
해짐
많은변수필요
동일자료형 -복잡해짐
다차원배열필요
서로다른자료형
-구조가복잡해짐
운전자가 자동차 시동을 켠다
운전자가 자동차 운전을 한다
장애
감지
운전자가 자동차를 정지 한다.
Yes
No
자동차의기능과
사람의기능이
혼재되어있음
다른사람이운전
을한다면 …
자동차
문
브레이크
엑셀레이터
문이 열린다
시동이 켜진다
전진한다
정지한다
사람
손
눈
장애물 판단한다
자동차 문을 연다
엑셀레이터를 밟는다
브레이크를 밟는다
발 자동차 전원을 켠다
전웡(key)
사람
사람
사람
프로그램
기술
진화
1. 객체지향 프로그램 ( OOPL )
5. Class & Object
• 캡슐화(Encapsulation )=정보은닉
-프로그램내에서같은기능의목적으로작성된코드를모아서다른곳(Class )
에서안보이게숨기는것
-Class 속성을숨기고(private ),공개(public )
• 상속(Inheritance )=재사용+확장
-Class와 Class관계 정의 ( 부모와 자식 )
-자식Class는부모Class 속성 및 기능을 사용 할 수 있음
• 다양성(polymorphism;폴리모피즘)=사용편의
-하나의 객체가 여러 가지 형태를 가질 수 있는 것.
-오버라이딩( 재정의:Overriding ),오버로딩( 기능확장 :Overloading )
“ 객체 지향 프로그래밍(OOP) 모델을 기반으로 하는 고급 프로그래밍 언어 “
5-1. 객체지향
OOP3대요소
• 단일책임원칙(Single Responsibility Principle)
- 모든클래스는각각하나의책임만가져야한다.
- 특수한목적을수행하도록만든클래스는해당목적외에다른기능을수행하면안된다.
• 개방-폐쇄원칙(Open Closed Principle)
- 클래스는 확장에는 열려 있고 수정에는 닫혀 있어야 한다.
- 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계 되어야함
• 리스코프치환원칙(Liskov Substitution Principle)
-자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다
- 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만
수행하도록 해야 한다.
• 인터페이스분리원칙(Interface Segregation Principle)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함.
- 하나의일반적인인터페이스보다여러개의구체적인인터페이스가낫다
• 의존관계역전원칙(Dependency Inversion Principle)
- 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화
하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다.
- 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.
OOP5원칙(SOLID)
1. Class
5. Class & Object
• Class :-분류또는종류라고하는동종의모임
• Instance :구체적인것(Class의생성자로객체를만드는과정:Instance 화 )
“ 객체 지향의 가장 기본적인 구조는 Class, 대등한 요소로는 Instance “
5-2. Class
Class
• Class :-일반Class, 추상 Class
• Interface
문법 요소
Class
Class Abstract Class
Interface
Class 구조
package ….
import ….
class 클래스명 { … }
public class 클래스명 {
int member = 5; // 필드
public 클래스명 (매개변수) { … } // 생성자
public 자료형 메서드명(매개변수) { ….. } // 메서드
class 이너클래스명 { …. } // innerClass
}
클래스 외부 구성 요소
클래스 내부 구성 요소
Class 구조 설명
• 외부 구성 요소
- package :자바Class 를모아놓은디렉토리
- import :다른package를사용할때포함해야함
- class :external class로public를키워드를붙일수
• 내부 구성 요소
- field : Class의 속성, Class내부에서 사용 하는 변수
- constructor :객체를생성하는역할담당. 생략하면기본생성자자동생김
- method :Class가 가지고 있는 기능(함수)
- innerClass :Class내부에 있는 Class
1. Class
5. Class & Object
5-2. Class
객체(Class ) 객체(Object )
▪ 변수와메소드를정의하는프로토타입
▪ Field(맴버변수:객체의상테) +Operation(Method:객체의행위)
▪ 클래스이름은대문자로시작,다음단어의시작은대문자
▪ 사용자정의자료형,객체의자료형
(Sample sample = new Sample() )
▪ Class 키워드로선언,논리적인개체,한번만선언
▪ 선언시키워드
:public -접근지정자가맨처음,
:abstract -추상클래스를선언
:final -더이상자식으로상속되지않음을명시,
:ClassName -클래스이름
:extends -다름클래스를상속,
:implements -인터페이스구현)
▪ 초기화순서
:메모리에적재된후한번초기화
-모든클래스변수(static 변수)가디폴트값으로초기화
▪ new키워드에의해서만들어지며,클래스의인스턴스,물리적인개체
필요할때마다생성
▪ type이Class인변수
▪ 객체이름은소문자로시작,다음단어의시작은대문자
2. 절차적 프로그램 구조와 차이점
5. Class & Object
5-2. Class
프로그램 구조적 차이
절차적 프로그램
함수 x
( 서브루틴 )
전역 변수 a
전역 변수 b
객체지향 프로그램
Class A
인스턴스 변수
지역 변수
함수 x
( 서브루틴 )
지역 변수
함수 x
( 서브루틴 )
지역 변수
함수 x
( 서브루틴 )
지역 변수
메서드 x
지역 변수
메서드 x
지역 변수
Class B
인스턴스 변수
메서드 x
지역 변수
메서드 x
지역 변수
접근 지정자에 따
라서 접근 가능
* Class B 객체 생
성 후 사용 가능 *
외부 함수
사용 선언
static 선업 시
바로 접근 가능
Class의생성자로객체를만드는과정 -> 인스턴스화
인스턴스
Class
3. Instance
5. Class & Object
5-2. Class
객체 생성
• 클래스(Class )의생성자로객체(Object )를만드는과정을인스턴스화(Instantiation )이라하며이과정에서만들어진객체를인스턴스( Instance )객체라함
객체생성
클래스명 참조변수명 = new 생성자();
메모리구조
인스턴스
메서드 영역
stack heap
100 Method
Field
Inner Class
Method
Heap에 object 할당
Stack에 변수 할당
100 번지
클래스
A a1 = new A();
A a2 = new A();
100 200
Object
A
100 번지 200 번지
Object
B
A
fun
class A {
void fun();
}
인스턴스
메서드 영역 stack heap
a1 a2
1. Field
5. Class & Object
5-3. Field
Field
• 인스턴스변수(or멤버변수):클래스(Class )에포함된변수로클래스안에있는모든곳에서접근가능하다->클래스의전역변수
• 지역변수:메서드(Method )에포함된변수로해당메소드에서만유효함
Field 선언
private 자료형 변수이름 [ = 초기값 ]
메모리 구조
• 인스턴스변수는객체안에저장(heap)
• 지역변수는stack에저장
100
100 번지
메서드 영역 stack heap
인스턴스변수는초기값이강제설정됨
Variable 'localNum' might not have been initialized
✓ 지역변수는stack에저장되므로초기화없으면오류발생
20
num
num01
Object
Instance
sum
pNum
1. Method
5. Class & Object
5-4. Method
Method
• 클래스의기능–Operation
Method 선언
자바제어자 반환Type Method명( 매개변수 ) {
실행 문 ;
[ return 값 ] // 반환 type 이 void 이면 생략
}
자바제어자
메서드 오버로딩 ( Method Overloading )
▪ 접근지정자 : 접근가능범위선언
-public, private, default, protected
▪ static :
- 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용
- 정적 멤버 ( Static Member )
- 객체 생성 없이 “객체명.정적멤버명“으로 사용
▪ final : 불변 값 표현
- 필드, 지역변수, 메서드, 클래스 앞에 위치 하며 각 의미가 틀림
▪ abstract :
- 기능을 정의 하지 않는 추상한 것을 상속 받은 곳에서 구현
- 추상 메서드(abstract method ), 추상 클래스 ( abstract class )
▪ 메서드 시그너처 ( Method signature )
-메서드명과입력매개변수로JVM은메서드명은같은데입력매개변수의개수
가틀리면다르게인식하는것을이용하는것으로이것을메서드 오버로딩
( Method Overloading )이라 함
가변 입력 매개 변수
▪ 배열입력 매개변수하고 하며, 여러 개의 입력 값을 하나로 전달"
▪ “ … “ 을 사용함
▪ 매개변수 : 입력 매개 변수로 복수인 경우 , 로 구분
자료형(Type) 매개변수이름 [ , 자료형(Type) 매개변수이름 ,… ]
반환Type Method명( 자료형 …참조변수명 ) {
실행 문 ;
[ return 값 ] // 반환 type 이 void 이면 생략
}
접근 지정자 접근(사용) 가능 범위
public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스
protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스
default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 가능 )
private 동일 클래스
2. 메서드 오버로딩 ( Method Overloading )
5. Class & Object
5-4. Method
메서드 오버로딩 ( Method Overloading )
• 메서드명과입력매개변수로JVM은메서드명은같은데입력매개변수의개수가틀리면다르게인식하는것을이용하는것
반환타입 메서드명( 자료형 변수명, 자료형 변수명, ….. ){ }
Method signature
3. 가변 입력 매개 변수
5. Class & Object
5-4. Method
가변 입력 매개 변수 ( Variable Argument )
• MethodOverloading을이용하면매개변수개수를계속만들어지는단점을극복하기위해
• 동일자료형으로매개변수의개수를동적으로지정해줄수기능
• 매개변수는배열로인식함
반환타입 메서드명( 자료형… 참조변수명 ){ }
1. Constructor
5. Class & Object
5-5. Constructor
생성자 Constructor
• 객체를생성할때사용하는기능으로2가지의문법적규칙이있다.
• 반드시클래스명과동일해야하고반환형이없어야한다.
• 클래스에생성가가없는경우컴파일러가입력매개변수가없는기본생성자를추가해준다.
• MethodOverloading을사용하여여러매개변수를가질수있음.
접근지정자 클래스명( 입력 매개변수’s ) { … } 기본생성자 : 클래스명() {}
2. this()
5. Class & Object
5-5. Constructor
This()
• 클래스내의다른생성자를호출,생성자함수내부의첫번째에사용해야함, 클래스내의멤버변수를참조하는경우는this.을사용함
1. Inner Class
5. Class & Object
5-6. Inner Class
Inner Class
• 클래스내부에있는클래스를의미함.
• 클래스멤버:인스턴스멤버이너클래스,정적 멤버 이너클래스
• 지역변수:지역이너클래스로 한정적으로사용
인스턴스 멤버 이너 클래스
(1)
(2)
(3)
(4)
(5)
1. Package
5. Class & Object
5-7. Package
Package
• 비슷한목적으로생성된 클래스파일을모아둔폴더
- 물리적으로하나의디렉터리를의미
• 하나의패키지에속한클래스나인터페이스파일은모두해당패키지이름의
디렉터리에포함
• 패키지는다른패키지를포함할수있으며,이때디렉터리의계층구조는점(.)으로구분
“서로 관련이 있는 클래스나 인터페이스를 함께 묶음, 클래스와 인터페이스의 집합“
package 패키지이름
Import
• 자바컴파일러에코드에서사용할클래스의패키지에대한정보를미리제공하는역할
- import문을사용하면다른패키지에속한클래스를패키지이름을제외한클래스이
름만으로사용
• 선언시별표(*)의미는하위패키지의모든Package의Class까지포함해 주는것
이아님
- 해당폴더에있는Class에대해서만이름만으로사용가능하다는의미
import 패키지이름.클래스이름;
import 패키지이름.*;
동일 package : import 생략
다른 Package : Full Package Class 명
다른 Package : * 사용 : Class 이름만 사용
1. 자바 제어자
• 접근지정자 : 접근가능범위선언
-public, private, default, protected
• static :
- 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용
- 정적 멤버 ( Static Member )
- 객체 생성 없이 “객체명.정적멤버명“으로 사용
• final : 불변 값 표현
- 필드, 지역변수, 메서드, 클래스 앞에 위치 하며 각 의미가 틀림
• abstract :
- 기능을 정의 하지 않는 추상한 것을 상속 받은 곳에서 구현
- 추상 메서드(abstract method ), 추상 클래스 ( abstract class )
접근 지정자 접근(사용) 가능 범위
public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스
protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스
default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 가능 )
private 동일 클래스
9. Modifier
9-1. Modifier
자바 제어자
• 클래스 : public, default, final, abstract
• 메서드 : public, protected, default, private, final, abstract, static
• 멤버변수 : public, protected, default, private, final, static
• 지역변수 : final
➢ 사용가능한 제어자
• 메서드에 static과 abstract를 함께 사용할 수 없다.
• 클래스에 abstract와 final을 동시에 사용할 수 없다.
• abstract메서드의 접근 제어자가 private일 수 없다.
• 메서드에 private와 final을 같이 사용할 필요는 없다.
➢ 사용시주의사항
➢ 접근제어자(access modifier)
1. 접근지정자
5. Class & Object
5-6. 자바 제어자
접근 지정자
• 멤버,생성자,메서드를접근하기위한지정자로선언한지정자에
따라서접근범위가결정된다.
X
X
X
접근 지정자 접근(사용) 가능 범위
public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스
protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스
default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 )
private 동일 클래스
2. static
5. Class & Object
5-6. 자바 제어자
static Field
• 클래스의멤버(필드,메서드,이너클래스)에사용
• 정적멤버(StaticMember)
• 객체생성없이“객체명.정적멤버명“으로 사용
메서드 영역 stack heap
num : 10
100
vNum :1
staticMember
( instance )
100 번지
StaticMember
( Class ) static
JVM
메모리 할당
Method 영역 Stack 영역 Heap 영역
Class 영역 Static 영역 Final 영역
✓ Static Member (정적변수)는인스턴스객체로 각각생성이되어도값은공유한다.
메서드 영역
stack
heap
StaticMember
sraticNum : 5
staticMember01 : 100
staticMember02 : 200
vNum :1 vNum :2
staticMember staticMember
2. static
5. Class & Object
5-7. 자바 제어자
static Method
• 정적메서드(StaticMember),객체생성없이“객체명.정적Method()“으로사용
• 인스턴스변수는사용불가,메서드내부에서객체를생성하여사용하는경우는객체의인스턴스변수사용가능
메서드 영역
stack
heap
staticMethod : 100
num : 1
mnum :10
snum
인스턴스 영역
instanceMethod()
Static 영역
staticMethod()
snum 10
2. static
5. Class & Object
5-7. 자바 제어자
static 초기화 블럭
• 객체생성이전에static field는초기화되지않는다.(몰론선언과동시에초기화하는경우제외)
• static블록을사용하여초기화한다.->메모리에Class가로딩되는시점에가장먼저실행됨
• Referencevariable는재할당할수없지만요소는변경가능하다.
3. final
5. Class & Object
5-7. 자바 제어자
final
• Field, Local Variable, Method, Class 앞에위치하며,각각의의미가틀리다.
• Field, Local Variable 사용시 초기화를 하여야 한다.
위치 의미
Local Variable 값 변경 불가
Field 값 변경 불가
Method Override 불가
Class 상속 불가
✓ Field, Local Variable 예제
✓ 다음페이지
3. final
5. Class & Object
5-7. 자바 제어자
final
✓ final Method
X
✓ final Class
4. abstract
5. Class & Object
5-7. 자바 제어자
abstract
• 사전적의미“추상적인”으로추상메소드( Abstract Method )와추상클래스( Abstract Class )가 있다.
• 추상메서드( Abstract Method ): Method선언 만 하고 기능이 없는 미완성 Method로 상속 받은 객체에서 기능 구현하는 것으로 세미콜론( ; )을 끝나야 함
• 추상클래스( Abstract Class ) : 하나이상의 추상메소드( Abstract Method )가포함되어있는 Class로 new 로 직접 생성 할 수 없고 상속을 통해서 만 가능
선언 방법 : abstract 자료형 메서드명();
미완성 코드
완성 코드

More Related Content

What's hot

Java programming pdf
Java programming pdfJava programming pdf
Java programming pdfJi Hoon Lee
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance정연 최
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기Yong Joon Moon
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403Yong Joon Moon
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편Darion Kim
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields정연 최
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)beom kyun choi
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
10 data nested_classes
10 data nested_classes10 data nested_classes
10 data nested_classes정연 최
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Younghan Kim
 
9 object class
9 object class9 object class
9 object class웅식 전
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정Javajigi Jaesung
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기NAVER D2
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJavajigi Jaesung
 

What's hot (17)

Java(2/4)
Java(2/4)Java(2/4)
Java(2/4)
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
Java 기초
Java 기초Java 기초
Java 기초
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
10 data nested_classes
10 data nested_classes10 data nested_classes
10 data nested_classes
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑
 
9 object class
9 object class9 object class
9 object class
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte Code
 

Similar to Java_05 class

자바스터디 2
자바스터디 2자바스터디 2
자바스터디 2jangpd007
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표재정 이
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약정아 손
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍MinGeun Park
 
Python class
Python classPython class
Python classHerren
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2Heejun Kim
 
[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3MinGeun Park
 
프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속
프로그래밍 오브젝티브 C  2.0 (5/E) -  8장 상속프로그래밍 오브젝티브 C  2.0 (5/E) -  8장 상속
프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속Keunhyun Oh
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화Hun Yong Song
 

Similar to Java_05 class (20)

자바스터디 2
자바스터디 2자바스터디 2
자바스터디 2
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
Java script
Java scriptJava script
Java script
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
 
Python class
Python classPython class
Python class
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2
 
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
(스프링초보자를위한)스프링 컨텍스트 설정과 관련된 어노테이션
 
[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3
 
Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속
프로그래밍 오브젝티브 C  2.0 (5/E) -  8장 상속프로그래밍 오브젝티브 C  2.0 (5/E) -  8장 상속
프로그래밍 오브젝티브 C 2.0 (5/E) - 8장 상속
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화
 

More from Hong Hyo Sang

Java_09 이너클래스
Java_09 이너클래스Java_09 이너클래스
Java_09 이너클래스Hong Hyo Sang
 
Java_07 제너릭 메서드
Java_07 제너릭 메서드Java_07 제너릭 메서드
Java_07 제너릭 메서드Hong Hyo Sang
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형Hong Hyo Sang
 
Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Hong Hyo Sang
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙Hong Hyo Sang
 

More from Hong Hyo Sang (11)

Javascript
JavascriptJavascript
Javascript
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java_09 이너클래스
Java_09 이너클래스Java_09 이너클래스
Java_09 이너클래스
 
Java_08 collection
Java_08 collectionJava_08 collection
Java_08 collection
 
Java_07 제너릭 메서드
Java_07 제너릭 메서드Java_07 제너릭 메서드
Java_07 제너릭 메서드
 
Java_03 연산자
Java_03 연산자Java_03 연산자
Java_03 연산자
 
Java_06 상속
Java_06 상속Java_06 상속
Java_06 상속
 
Java_04 제어
Java_04 제어Java_04 제어
Java_04 제어
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형
 
Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
 

Java_05 class

  • 1. JAVA CLASS & OBJECT 작성자 : 홍효상 이메일 : hyomee@naver.com 소스 : https://github.com/hyomee/JAVA_EDU 프로그램은 사람이 이해하는 코드를 작성. 느려도 꾸준하면 경기에서 이긴다.
  • 2. Content 소스 : https://github.com/hyomee/JAVABASIC 5. Class & Object & Modifier 1. 객체지향프로그램(OOPL) 2. Class 3. Field 4. Method 5. Constructor 6. Package 7. 자바 제어자
  • 3. 1. 객체지향 프로그램 ( OOPL ) 5. Class & Object • 객체:모든데이터,객체의상태(state)와행동(behavior)을 구체화하는형태의프로그래밍이바로객체지향프로그래밍 • 논리적클래스,객체,메소드,관계및기타프로세스를소프트웨어및애플리케이션설계를바탕으로 • 객체지향프로그래밍언어의프로그래밍구문이하나이상의객체를기반으로 • 데이터추상화,상속,캡슐화,클래스생성및관련개체를포함하여기본개체지향기능을나타내야언어. “ 객체 지향 프로그래밍(OOP) 모델을 기반으로 하는 고급 프로그래밍 언어 “ 5-1. 객체지향 객체지향프로그램언어(Object-Oriented Programming Language ) 왜Class가만들어졌을까? • Data관점 -절차적언어문법으로복잡한 Data를 표시에한계있음 변수 베열 구조채 클래스 운전자가 자동차에 탑승 한다. • 처리관점 -순차적으로처리하는기능중심 의프로그램은프로그램이복잡 해짐 많은변수필요 동일자료형 -복잡해짐 다차원배열필요 서로다른자료형 -구조가복잡해짐 운전자가 자동차 시동을 켠다 운전자가 자동차 운전을 한다 장애 감지 운전자가 자동차를 정지 한다. Yes No 자동차의기능과 사람의기능이 혼재되어있음 다른사람이운전 을한다면 … 자동차 문 브레이크 엑셀레이터 문이 열린다 시동이 켜진다 전진한다 정지한다 사람 손 눈 장애물 판단한다 자동차 문을 연다 엑셀레이터를 밟는다 브레이크를 밟는다 발 자동차 전원을 켠다 전웡(key) 사람 사람 사람 프로그램 기술 진화
  • 4. 1. 객체지향 프로그램 ( OOPL ) 5. Class & Object • 캡슐화(Encapsulation )=정보은닉 -프로그램내에서같은기능의목적으로작성된코드를모아서다른곳(Class ) 에서안보이게숨기는것 -Class 속성을숨기고(private ),공개(public ) • 상속(Inheritance )=재사용+확장 -Class와 Class관계 정의 ( 부모와 자식 ) -자식Class는부모Class 속성 및 기능을 사용 할 수 있음 • 다양성(polymorphism;폴리모피즘)=사용편의 -하나의 객체가 여러 가지 형태를 가질 수 있는 것. -오버라이딩( 재정의:Overriding ),오버로딩( 기능확장 :Overloading ) “ 객체 지향 프로그래밍(OOP) 모델을 기반으로 하는 고급 프로그래밍 언어 “ 5-1. 객체지향 OOP3대요소 • 단일책임원칙(Single Responsibility Principle) - 모든클래스는각각하나의책임만가져야한다. - 특수한목적을수행하도록만든클래스는해당목적외에다른기능을수행하면안된다. • 개방-폐쇄원칙(Open Closed Principle) - 클래스는 확장에는 열려 있고 수정에는 닫혀 있어야 한다. - 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계 되어야함 • 리스코프치환원칙(Liskov Substitution Principle) -자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다 - 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 한다. • 인터페이스분리원칙(Interface Segregation Principle) - 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함. - 하나의일반적인인터페이스보다여러개의구체적인인터페이스가낫다 • 의존관계역전원칙(Dependency Inversion Principle) - 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화 하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. - 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다. OOP5원칙(SOLID)
  • 5. 1. Class 5. Class & Object • Class :-분류또는종류라고하는동종의모임 • Instance :구체적인것(Class의생성자로객체를만드는과정:Instance 화 ) “ 객체 지향의 가장 기본적인 구조는 Class, 대등한 요소로는 Instance “ 5-2. Class Class • Class :-일반Class, 추상 Class • Interface 문법 요소 Class Class Abstract Class Interface Class 구조 package …. import …. class 클래스명 { … } public class 클래스명 { int member = 5; // 필드 public 클래스명 (매개변수) { … } // 생성자 public 자료형 메서드명(매개변수) { ….. } // 메서드 class 이너클래스명 { …. } // innerClass } 클래스 외부 구성 요소 클래스 내부 구성 요소 Class 구조 설명 • 외부 구성 요소 - package :자바Class 를모아놓은디렉토리 - import :다른package를사용할때포함해야함 - class :external class로public를키워드를붙일수 • 내부 구성 요소 - field : Class의 속성, Class내부에서 사용 하는 변수 - constructor :객체를생성하는역할담당. 생략하면기본생성자자동생김 - method :Class가 가지고 있는 기능(함수) - innerClass :Class내부에 있는 Class
  • 6. 1. Class 5. Class & Object 5-2. Class 객체(Class ) 객체(Object ) ▪ 변수와메소드를정의하는프로토타입 ▪ Field(맴버변수:객체의상테) +Operation(Method:객체의행위) ▪ 클래스이름은대문자로시작,다음단어의시작은대문자 ▪ 사용자정의자료형,객체의자료형 (Sample sample = new Sample() ) ▪ Class 키워드로선언,논리적인개체,한번만선언 ▪ 선언시키워드 :public -접근지정자가맨처음, :abstract -추상클래스를선언 :final -더이상자식으로상속되지않음을명시, :ClassName -클래스이름 :extends -다름클래스를상속, :implements -인터페이스구현) ▪ 초기화순서 :메모리에적재된후한번초기화 -모든클래스변수(static 변수)가디폴트값으로초기화 ▪ new키워드에의해서만들어지며,클래스의인스턴스,물리적인개체 필요할때마다생성 ▪ type이Class인변수 ▪ 객체이름은소문자로시작,다음단어의시작은대문자
  • 7. 2. 절차적 프로그램 구조와 차이점 5. Class & Object 5-2. Class 프로그램 구조적 차이 절차적 프로그램 함수 x ( 서브루틴 ) 전역 변수 a 전역 변수 b 객체지향 프로그램 Class A 인스턴스 변수 지역 변수 함수 x ( 서브루틴 ) 지역 변수 함수 x ( 서브루틴 ) 지역 변수 함수 x ( 서브루틴 ) 지역 변수 메서드 x 지역 변수 메서드 x 지역 변수 Class B 인스턴스 변수 메서드 x 지역 변수 메서드 x 지역 변수 접근 지정자에 따 라서 접근 가능 * Class B 객체 생 성 후 사용 가능 * 외부 함수 사용 선언 static 선업 시 바로 접근 가능 Class의생성자로객체를만드는과정 -> 인스턴스화 인스턴스 Class
  • 8. 3. Instance 5. Class & Object 5-2. Class 객체 생성 • 클래스(Class )의생성자로객체(Object )를만드는과정을인스턴스화(Instantiation )이라하며이과정에서만들어진객체를인스턴스( Instance )객체라함 객체생성 클래스명 참조변수명 = new 생성자(); 메모리구조 인스턴스 메서드 영역 stack heap 100 Method Field Inner Class Method Heap에 object 할당 Stack에 변수 할당 100 번지 클래스 A a1 = new A(); A a2 = new A(); 100 200 Object A 100 번지 200 번지 Object B A fun class A { void fun(); } 인스턴스 메서드 영역 stack heap a1 a2
  • 9. 1. Field 5. Class & Object 5-3. Field Field • 인스턴스변수(or멤버변수):클래스(Class )에포함된변수로클래스안에있는모든곳에서접근가능하다->클래스의전역변수 • 지역변수:메서드(Method )에포함된변수로해당메소드에서만유효함 Field 선언 private 자료형 변수이름 [ = 초기값 ] 메모리 구조 • 인스턴스변수는객체안에저장(heap) • 지역변수는stack에저장 100 100 번지 메서드 영역 stack heap 인스턴스변수는초기값이강제설정됨 Variable 'localNum' might not have been initialized ✓ 지역변수는stack에저장되므로초기화없으면오류발생 20 num num01 Object Instance sum pNum
  • 10. 1. Method 5. Class & Object 5-4. Method Method • 클래스의기능–Operation Method 선언 자바제어자 반환Type Method명( 매개변수 ) { 실행 문 ; [ return 값 ] // 반환 type 이 void 이면 생략 } 자바제어자 메서드 오버로딩 ( Method Overloading ) ▪ 접근지정자 : 접근가능범위선언 -public, private, default, protected ▪ static : - 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용 - 정적 멤버 ( Static Member ) - 객체 생성 없이 “객체명.정적멤버명“으로 사용 ▪ final : 불변 값 표현 - 필드, 지역변수, 메서드, 클래스 앞에 위치 하며 각 의미가 틀림 ▪ abstract : - 기능을 정의 하지 않는 추상한 것을 상속 받은 곳에서 구현 - 추상 메서드(abstract method ), 추상 클래스 ( abstract class ) ▪ 메서드 시그너처 ( Method signature ) -메서드명과입력매개변수로JVM은메서드명은같은데입력매개변수의개수 가틀리면다르게인식하는것을이용하는것으로이것을메서드 오버로딩 ( Method Overloading )이라 함 가변 입력 매개 변수 ▪ 배열입력 매개변수하고 하며, 여러 개의 입력 값을 하나로 전달" ▪ “ … “ 을 사용함 ▪ 매개변수 : 입력 매개 변수로 복수인 경우 , 로 구분 자료형(Type) 매개변수이름 [ , 자료형(Type) 매개변수이름 ,… ] 반환Type Method명( 자료형 …참조변수명 ) { 실행 문 ; [ return 값 ] // 반환 type 이 void 이면 생략 } 접근 지정자 접근(사용) 가능 범위 public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스 protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스 default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 가능 ) private 동일 클래스
  • 11. 2. 메서드 오버로딩 ( Method Overloading ) 5. Class & Object 5-4. Method 메서드 오버로딩 ( Method Overloading ) • 메서드명과입력매개변수로JVM은메서드명은같은데입력매개변수의개수가틀리면다르게인식하는것을이용하는것 반환타입 메서드명( 자료형 변수명, 자료형 변수명, ….. ){ } Method signature
  • 12. 3. 가변 입력 매개 변수 5. Class & Object 5-4. Method 가변 입력 매개 변수 ( Variable Argument ) • MethodOverloading을이용하면매개변수개수를계속만들어지는단점을극복하기위해 • 동일자료형으로매개변수의개수를동적으로지정해줄수기능 • 매개변수는배열로인식함 반환타입 메서드명( 자료형… 참조변수명 ){ }
  • 13. 1. Constructor 5. Class & Object 5-5. Constructor 생성자 Constructor • 객체를생성할때사용하는기능으로2가지의문법적규칙이있다. • 반드시클래스명과동일해야하고반환형이없어야한다. • 클래스에생성가가없는경우컴파일러가입력매개변수가없는기본생성자를추가해준다. • MethodOverloading을사용하여여러매개변수를가질수있음. 접근지정자 클래스명( 입력 매개변수’s ) { … } 기본생성자 : 클래스명() {}
  • 14. 2. this() 5. Class & Object 5-5. Constructor This() • 클래스내의다른생성자를호출,생성자함수내부의첫번째에사용해야함, 클래스내의멤버변수를참조하는경우는this.을사용함
  • 15. 1. Inner Class 5. Class & Object 5-6. Inner Class Inner Class • 클래스내부에있는클래스를의미함. • 클래스멤버:인스턴스멤버이너클래스,정적 멤버 이너클래스 • 지역변수:지역이너클래스로 한정적으로사용 인스턴스 멤버 이너 클래스 (1) (2) (3) (4) (5)
  • 16. 1. Package 5. Class & Object 5-7. Package Package • 비슷한목적으로생성된 클래스파일을모아둔폴더 - 물리적으로하나의디렉터리를의미 • 하나의패키지에속한클래스나인터페이스파일은모두해당패키지이름의 디렉터리에포함 • 패키지는다른패키지를포함할수있으며,이때디렉터리의계층구조는점(.)으로구분 “서로 관련이 있는 클래스나 인터페이스를 함께 묶음, 클래스와 인터페이스의 집합“ package 패키지이름 Import • 자바컴파일러에코드에서사용할클래스의패키지에대한정보를미리제공하는역할 - import문을사용하면다른패키지에속한클래스를패키지이름을제외한클래스이 름만으로사용 • 선언시별표(*)의미는하위패키지의모든Package의Class까지포함해 주는것 이아님 - 해당폴더에있는Class에대해서만이름만으로사용가능하다는의미 import 패키지이름.클래스이름; import 패키지이름.*; 동일 package : import 생략 다른 Package : Full Package Class 명 다른 Package : * 사용 : Class 이름만 사용
  • 17. 1. 자바 제어자 • 접근지정자 : 접근가능범위선언 -public, private, default, protected • static : - 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용 - 정적 멤버 ( Static Member ) - 객체 생성 없이 “객체명.정적멤버명“으로 사용 • final : 불변 값 표현 - 필드, 지역변수, 메서드, 클래스 앞에 위치 하며 각 의미가 틀림 • abstract : - 기능을 정의 하지 않는 추상한 것을 상속 받은 곳에서 구현 - 추상 메서드(abstract method ), 추상 클래스 ( abstract class ) 접근 지정자 접근(사용) 가능 범위 public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스 protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스 default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 가능 ) private 동일 클래스 9. Modifier 9-1. Modifier 자바 제어자 • 클래스 : public, default, final, abstract • 메서드 : public, protected, default, private, final, abstract, static • 멤버변수 : public, protected, default, private, final, static • 지역변수 : final ➢ 사용가능한 제어자 • 메서드에 static과 abstract를 함께 사용할 수 없다. • 클래스에 abstract와 final을 동시에 사용할 수 없다. • abstract메서드의 접근 제어자가 private일 수 없다. • 메서드에 private와 final을 같이 사용할 필요는 없다. ➢ 사용시주의사항 ➢ 접근제어자(access modifier)
  • 18. 1. 접근지정자 5. Class & Object 5-6. 자바 제어자 접근 지정자 • 멤버,생성자,메서드를접근하기위한지정자로선언한지정자에 따라서접근범위가결정된다. X X X 접근 지정자 접근(사용) 가능 범위 public 동일 패키지의 모든 메서드 + 다른 패키지의 모든 클래스 protected 동일 패키지의 모든 메서드 + 다른 패키지의 자식 클래스 default ( or package ) 동일 패키지의 모든 메서드 ( 접근 지정자 생략 ) private 동일 클래스
  • 19. 2. static 5. Class & Object 5-6. 자바 제어자 static Field • 클래스의멤버(필드,메서드,이너클래스)에사용 • 정적멤버(StaticMember) • 객체생성없이“객체명.정적멤버명“으로 사용 메서드 영역 stack heap num : 10 100 vNum :1 staticMember ( instance ) 100 번지 StaticMember ( Class ) static JVM 메모리 할당 Method 영역 Stack 영역 Heap 영역 Class 영역 Static 영역 Final 영역 ✓ Static Member (정적변수)는인스턴스객체로 각각생성이되어도값은공유한다. 메서드 영역 stack heap StaticMember sraticNum : 5 staticMember01 : 100 staticMember02 : 200 vNum :1 vNum :2 staticMember staticMember
  • 20. 2. static 5. Class & Object 5-7. 자바 제어자 static Method • 정적메서드(StaticMember),객체생성없이“객체명.정적Method()“으로사용 • 인스턴스변수는사용불가,메서드내부에서객체를생성하여사용하는경우는객체의인스턴스변수사용가능 메서드 영역 stack heap staticMethod : 100 num : 1 mnum :10 snum 인스턴스 영역 instanceMethod() Static 영역 staticMethod() snum 10
  • 21. 2. static 5. Class & Object 5-7. 자바 제어자 static 초기화 블럭 • 객체생성이전에static field는초기화되지않는다.(몰론선언과동시에초기화하는경우제외) • static블록을사용하여초기화한다.->메모리에Class가로딩되는시점에가장먼저실행됨 • Referencevariable는재할당할수없지만요소는변경가능하다.
  • 22. 3. final 5. Class & Object 5-7. 자바 제어자 final • Field, Local Variable, Method, Class 앞에위치하며,각각의의미가틀리다. • Field, Local Variable 사용시 초기화를 하여야 한다. 위치 의미 Local Variable 값 변경 불가 Field 값 변경 불가 Method Override 불가 Class 상속 불가 ✓ Field, Local Variable 예제 ✓ 다음페이지
  • 23. 3. final 5. Class & Object 5-7. 자바 제어자 final ✓ final Method X ✓ final Class
  • 24. 4. abstract 5. Class & Object 5-7. 자바 제어자 abstract • 사전적의미“추상적인”으로추상메소드( Abstract Method )와추상클래스( Abstract Class )가 있다. • 추상메서드( Abstract Method ): Method선언 만 하고 기능이 없는 미완성 Method로 상속 받은 객체에서 기능 구현하는 것으로 세미콜론( ; )을 끝나야 함 • 추상클래스( Abstract Class ) : 하나이상의 추상메소드( Abstract Method )가포함되어있는 Class로 new 로 직접 생성 할 수 없고 상속을 통해서 만 가능 선언 방법 : abstract 자료형 메서드명(); 미완성 코드 완성 코드