자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
JSP Programming with a Workbook
명품 JAVA Essential.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Chapter 4. 클래스와 객체 PS Lab. 이지연.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
6장. 클래스.
레퍼런스 타입에 대하여 열거 타입의 선언과 이용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
23장. 구조체와 사용자 정의 자료형 2.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Lesson 7. 클래스와 메소드 - 1.
Chap.10 자바 컴파일링의 안쪽 PS Lab. 이지연.
10장. 예외처리.
자바 5.0 프로그래밍.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
자바 5.0 프로그래밍.
자바응용.
Java Virtual Machine Chapter 5. 제어문 Ps lab 김윤경.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
Fucntion 요약.
CHAP 21. 전화, SMS, 주소록.
12. 상속 : 고급.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
Presentation transcript:

자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경

Contents 메소드 호출의 컴파일 메소드 호출의 예 메소드 호출 명령어 오버라이딩/오버로딩 기타 문장 컴파일

메소드 호출의 컴파일 메소드 호출 메소드 호출은 수신자에 대하여 수행된다. 수신자는 메소드 이름의 왼쪽에 있는 표현식의 결과, 즉 ‘객체의 참조자’ 이다. Ex. Object.func(); 메소드 호출 처리 순서 수신자 표현식 처리 인자 처리 메소드 호출 명령어 처리 메소드의 반환값을 사용하지 않는 경우 자동으로 반환값을 스택에서 pop하는 코드를 포함시킨다.

메소드 호출의 예 자바 코드 Oolong 코드 System.out.println(“Hello, world”); getstatic java/lang/System/out Ljava/io/PrintStream; ldc “Hello, world” invokevirtual java/io/PrintStream (Ljava/lang/String;)V

메소드 호출 명령어 메소드 호출 명령어 invokevirtual invokespecial invokeinterface 가상 메소드 호출 invokespecial 어떤 메소드를 호출할지 정확히 알고 있는 경우 사용 invokeinterface 인터페이스를 통한 메소드 호출 invokestatic 정적 메소드 호출 수신자로 객체 대신, 클래스 이름을 사용 따라서 수신자에 관련된 코드를 컴파일할 필요 없다.

오버라이딩/오버로딩 오버라이딩 수퍼클래스에서 동일한 이름과 동일한 인자로 선언된 메소드를 서브 클래스에서 다시 선언하고 정의하는 것 어떤 메소드를 사용할 것인지는 런타임에 결정 오버로딩 이름은 같지만 인자는 다른 메소드(즉, 전혀 다른 메소드)들을 중복하여 선언하는 것 어떤 메소드를 사용할 것인지는 컴파일 타임에 결정

기타 문장 컴파일 Boolean 값 Boolean 값을 테스트하는 명령어 ==연산자와 equals 메소드 true는 1, false는 0으로 표현된다. Boolean 값을 테스트하는 명령어 ifeq : true면 그냥 넘어가고, false면 분기 ifne : false면 그냥 넘어가고, true면 분기 ifge, ifgt, iflt… if_icmpge, if_acmpeq… If문, 비교문, for문의 표현식, &&연산 등에서 사용 ==연산자와 equals 메소드 == 연산자 : ‘동일한 객체를 가리키고 있느냐’를 비교 equals 메소드 : ‘같은 내용이냐’를 비교 (클래스를 만든 사람이 제공)

기타 문장 컴파일 (cont.) 블록 리턴문 필드의 선언 메소드의 선언 각각의 문장을 처리하고 난 뒤의 스택의 상태는 항상 같기 때문에, 이것을 하나로 모아 블록으로 묶어도 상관없다. 리턴문 areturn, ireturn, freturn, return… 필드의 선언 .field 수식자 필드명 필드타입 [초기화표현식] 메소드의 선언 .method 수식자 메소드명 인자리스트 리턴타입 코드블록 .end method

기타 문장 컴파일 (cont.) 생성자의 선언 만들어진 메소드의 이름이 <init> 인 것만 제외하면 다른 메소드의 컴파일과 같다 생성자 코드블록의 컴파일 슈퍼클래스 생성자 호출 – 필드 초기화 – 생성자 몸체 슈퍼클래스의 생성자 호출 invokespecial 사용 Invokevirtual을 사용할 경우, 현재의 <init>이 슈퍼클래스의 <init>을 오버라이드한 것이 되어, 다시 현재의 <init>을 호출하게 되기 때문이다.