Java Chapter 4 ~ 5 2014.01.16 2주차.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

Class diagram. 클래스 클래스 이름 연산 속성 2 class Transportation { private int maximumPassenger; private double speed; public void depart(); public void stop();
제 5 장 상속과 다형성.
상속에 대해 알아봅니다. 상속과 클래스 계층구조 메소드 오버라이딩
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Programming for the java Virtual machine
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
Java로 배우는 디자인패턴 입문 Chapter 0. UML 과 Design Pattern
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
명품 JAVA Essential.
명품 JAVA Programming.
명품 JAVA Programming 제 4 장 클래스와 객체.
소프트웨어공학 UML 학기.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
프로그래밍 언어론 제 9 장 객체 지향 개념 객체 지향 방법론 객체 모델링 객체 지향 언어 C++ 객체 지향 언어 CLOS
명품 JAVA Essential.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
명품 Java Programming.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
C ++ 프로그래밍 시작.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
제1장 서론.
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
Java 8장. 상속 public class SumTest {
DataScience Lab. 박사과정 김희찬 (월)
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
소프트웨어 공학 (Software Engineering)
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
C# 09장. 상속성.
Web programming Chap 04 상속 김 정 석
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
국제의료관광 관련 법, 제도.
컴퓨터공학실습(I) 3주 인공지능연구실.
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
Spring DI 이해 및 활용.
JA V A W. 07 Sb.L.
Chapter 02. 소프트웨어와 자료구조.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
[ 단원 06 ] 상속과 다형성.
자바 5.0 프로그래밍.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
6장 클래스(상속).
2015년 2학년 1반.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Choi Younghwan CSE HUFS
1. 객체-지향 프로그래밍.
Chapter 1 인간행동의 이해와 사회복지실천
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

Java Chapter 4 ~ 5 2014.01.16 2주차

세부 계획 스터디 계획 및 Ch.1 ~ Ch.3 1주차 Ch.4 ~ Ch.5 2주차 Ch.6 ~ Ch.7 3주차 4주차 Ch.10 ~ Ch.11 5주차 Ch.12 ~ Ch.13 6주차 Ch.14 ~ Ch.15 (선택) 7주차 Ch.16 ~ Ch.17 (선택) 8주차 프로그램 1주차 9주차 프로그램 2주차 10주차

프로그래밍 계획 채팅 프로그램 환경 방향 TCP/IP 프로그래밍의 프로그램 을 JAVA로 구현 이클립스 Window Builder 방향 준비 : 2 ~ 5 주차 ( 규약 ) 코딩 : 9 ~ 10주차 ( 규약 )

채팅 프로그래밍 구상 ( 2주차 ) ① TCP/IP에서 만든 채팅프로그램을 Java 기반으로 변경 및 GUI 작성 ② 이모티콘 및 사진 전송 구현 ③ 파일 전송 구현 ④ 프로필 구현 ⑤ 공지 구현

Chapter 4 ~ 5

자바의 특징 자바는 객체 지향적 언어! 캡슐화 상속 다형성

객체 생성 : first afirst; afirst = new first( ); 클래스의 구성 필드 생성자 메소드 객체 생성 : first afirst; afirst = new first( );

키워드 this 객체 자신을 가리키는 키워드 This의 필요성 매개변수와 클래스의 맴버 이름이 같을 경우 구분을 하기 위하여 사용

생성자 생성자 특징 객체가 생성하는 순간 자동으로 호출 생성자의 이름은 클래스의 이름과 동일 연산자 new를 통해 객체를 생성할 때만 호출 생성자도 오버로딩이 가능 리턴타입이 없다 기본 생성자는 자동으로 생성 →이미 생성자가 있다면 자 동생성 되지 아니함 생성자 용도 필드의 초기화와 객체 생성 순간에 처리할 작업의 수행

가비지와 가비지 컬렉션 가비지란 간단히 응용프로그램에서 더 이상 사 용되지 않는 메모리이다. Person a, b; a = new Person(“이몽룡”); b = new Person(“성춘향”); b = a;

가비지와 가비지 컬렉션(2) 가비지 컬렉션이란 자바 가상 기계가 가용 공간 이 일정 크기 이하로 줄어들었을 경우 자동으로 가비지를 회수하여 가용 메모리 공간을 늘리는 것을 뜻한다. System 또는 Runtime 객체의 gc() 메소드를 호출 하면 강제로 가비지 컬렉션을 수행할 수 있다. System.gc(); //가비지 컬렉션 작동 요청

접근 지정자 클래스 접근 지정자 : default, public 멤버 접근 지정자 : default, private, protected, public default private protected public 같은 패키지의 클래스 O X 다른 패키지의 클래스

Static 멤버 객체를 생성하지 않고도 사용할 수 있는 멤버를 static 멤버라 한다.

Static 멤버(2) static의 활용 static 메소드의 제약 조건 전역 변수와 전역 함수를 만들 때 활용한다. 공유 멤버를 만들고자 할 때 활용한다. static 메소드의 제약 조건 static 메소드는 오직 static 멤버만 접근할 수 있다. static 메소드에서는 this 키워드를 사용할 수 없다.

This() 한 클래스내의 한 생성자에서 다른 생성자를 호 출할때 사용함 This() 특징 생성자 코드에서만 사용 동일한 클래스내의 다른 생성자를 호출 반드시 생성자의 첫 번째 문장에서 사용되어 야 함

Final final 클래스 - 더 이상 클래스 상속 불가능 final 메소드 - 더 이상 오버라이딩 불가능 상수를 정의할 때 사용 상수 필드는 선언 시에 초기 값을 지정하여야 한다 상수 필드는 한 번 정의되면 값을 변경할 수 없다 생성자 내에서는 final 멤버변수의 초기화가 가능하다! class SharedClass { public static final double PI = 3.141592653589793; }

상속 상위 클래스의 특성을 하위 클래스에 물려주는 것 슈퍼 클래스 (superclass) 서브 클래스 (subclass) 상위 클래스의 특성을 하위 클래스에 물려주는 것 슈퍼 클래스 (superclass) 서브 클래스 (subclass) 슈퍼 클래스에서 하위 클래스로 갈 수록 구체적 상속을 통해 서브 클래스의 간결한 클래스 정의 public class Person { ... } public class Student extends Person { // Person을 상속받는 클래스 Student 선언 ... } public class StudentWorker extends Student { // Student를 상속받는 StudentWorker 선언 ... }

상속의 필요성 클래스 사이의 멤버 중복 선언 방지 필드와 메소드 재사용으로 클래스 간결화 클래스 간 계층적 분류 및 관리 말하기 먹기 걷기 잠자기 class Person 상속을 이용한 경우 중복이 제거되고 간결해진 클래스 구조 상속 공부하기 연구하기 class Researcher class Student 상속 상속 일하기 가르치기 class Professor class StudentWorker

상속의 특징 다중 상속 지원하지 않는다 상속의 횟수에 제한을 두지 않는다 계층구조의 최상위에 있는 클래스는 java.lang.Object 클 래스이다.

5.3 상속과 접근지정자

접근지정자 슈퍼클래스멤버에 접근하는 클래스 종류 슈퍼클래스 멤버의 접근 지정자 default private Protected Public 멤버 Default 멤버 슈퍼클래스멤버에 접근하는 클래스 종류 슈퍼클래스 멤버의 접근 지정자 default private Protected public 같은패키지의 클래스 O X 다른패키지의 클래스 같은 패키지의 서브클래스 다른 패키지의 서브클래스

5.4 상속과 생성자

상속과 생성자 상속관계에 있는 슈퍼클래스와 서브 클래스는 각각 생성자를 가지고 있다. 슈퍼클래스의 생성자가 먼저 실행된 후 서브 클래스의 생성자가 실행된다. 서브클래스의 인스턴스 생성시, 컴파일러는 슈퍼클래스의 생성자를 기준으 로 적합한 슈퍼클래스의 생성자 짝을 찾는다. 기본생성자와 매개변수를 가진 생성자 여러 개가 있을 수 있다. 특별한 지시가 없으면 서브클래스의 생성자가 무엇이든 슈퍼클래스의 기 본 생성자 자동 호출 Super()을 이용하여 명시적으로 슈퍼클래스의 생성자를 호출 할 수 있다.

5.5 객체의 타입변환 : 업캐스팅과 다운캐스팅

업캐스팅 다운캐스팅 서브클래스는 슈퍼클래스의 모든 특성을 상속받아서 슈퍼클래스처럼 취급될 수 있다. 서브클래스는 슈퍼클래스의 모든 특성을 상속받아서 슈퍼클래스처럼 취급될 수 있다. 서브클래스가 슈퍼클래스 타입으로 변환 되는것=업캐 스팅 명시적 타입변환을 하지않아도 됨. 서브클래스 객체는 슈퍼클래스 타입이기도 하므로 다운캐스팅 업캐스팅 된 것을 다시 원래대로 되돌리는 것. 명시적으로 타입을 지정해야한다.

Instanceof 연산자와 객체구별 업캐스팅을 한 경우 어떤 레퍼런스가 가리키는 객체의 진짜 타입을 구분하기 어렵다. 업캐스팅을 한 경우 어떤 레퍼런스가 가리키는 객체의 진짜 타입을 구분하기 어렵다. 레퍼런스가 가리키는 실제객체가 어떤 클래스 타입인지 구분하기 위해 자바 에서는 instanceof연산자를 쓴다. (이항연산자-사용) 객체레퍼런스 instanceof 클래스타입 결과값은 boolean타입 해당클래스타입이면 true

메소드 오버라이딩과 오버로딩

메소드 오버라이딩과 오버로딩 메소드 오버라이딩이란? 메소드 오버로드란? :메소드 오버로딩이란 동일한 이름의 메소드를 둘 이상 메소드 오버라이딩이란? :슈퍼 클래스와 서브 클래스의 메소드 사이에 발생하는 관계이며, 슈퍼클 래스에 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개변수 리스 트를 갖는 메소드를 서브클래스에서 재 작성하는 것. 메소드 오버라이딩 은 개발자가 상속받은 슈퍼클래스의 어떤 메소드를 자신의 특성에 맞게 새로 만들어 사용하고 싶은 경우에 활용된다. 메소드 오버로드란? :메소드 오버로딩이란 동일한 이름의 메소드를 둘 이상 동시에 정의하는 것을 뜻 한다. 메소드의 매개변수선언(개수 또는 자료형)이 다르면 메소드 오버로딩 성립

메소드 오버라이딩의 조건 메소드 오버라이딩은 슈퍼 클래스의 메소드와 완전히 동 일한 메소드를 재정의 한다. 메소드 오버라이딩 시에 슈퍼 클래스 메소드의 접근 지정 자보다 접근의 범위가 좁아 질 수 있다. :( 만약 슈퍼클래스의 메소드가 public 으로 선언되었다면 서브클래스 에서 메소드 오버라이딩 시 protect와 private 을 사용할 수 없 으며 반드시 public으로 해야 한다.) 메소드 오버라이딩에서 메소드 이름, 매개 변수 리스트는 같으나 리턴 타입만 다를 수 없다. Static, private, final로 선언된 메소드는 오버라이딩 될 수 없 다.

메소드 오버라이딩 만들기 슈퍼 클래스의 메소드 getLocation과 완 전히 동일한 메소드를 재정의!!!

메소드 오버라이딩에서 동적바인딩 동적 바인딩 : 오버라이딩 된 메소드가 항상 우선적으로 호출된다.

Super키워드 Super 키워드를 사용하면 슈퍼클래스의 멤버에 접근할 수 있다. 슈퍼 클래스의 메소드 getLocation과 완 전히 동일한 메소드를 재정의!!!

추상 클래스와 추상 메소드 추상메소드 추상클래스 추상 메소드를 포함하는 클래스로서 반드시 abstract로 선 언되어야 한다. : 선언은 되어 있으나 코드가 구현되어 있지 않은 껍데기 만 있는 메소드 abstract키워드와 함께 메소드의 타입, 이름, 매개 변수 리 스트만 선언해야 한다. 추상클래스 추상 메소드를 포함하는 클래스로서 반드시 abstract로 선 언되어야 한다. 추상메소드가 없지만 abstract로 선언한 클래스

추상 클래스와 추상 메소드

* 추상 클래스는 인스턴스를 생성할 수 없다. * 추상 클래스에는 실행 코드가 없는 추상 메소드가 있을 수 있으므로 추상 클래스의 객체를 생성 할 수 없도록 제한하 였다.

추상 클래스의 상속 추상 클래스를 상속 받으면 상속 받은 서브 클래스는 추상 클래스가 된다. 따라서 이 셩우 서브 클래스에도 abstract를 붙 여 추상 클래스임을 명시해야 컴파일 오류가 발생하지 않는 다.

인터페이스 인터 페이스란? 자바 인터페이스란? 멤버는 추상메소드와 상수만으로 구성된다. : 인터페이스는 서로 다른 하드웨어 장치들이 상호 접속 하여 데이터를 주고 받을 수 있는 규격을 의미 한다. 자바 인터페이스란? : 추상클래스와 유사하며 interface 키워드를 사용하여 선 언한다. 멤버는 추상메소드와 상수만으로 구성된다. 모든 메소드는 public 이며 생략이 가능하다. 인터페이스의 객체를 생성 할 수 없다. 다른 인터페이스에 상속 될 수 있다. 인터페이스도 레퍼런스 변수의 타입으로 사용가능 하 다.

인터페이스의 특성

인터페이스의 다중구현

실습