Java 2주차 최종

Download Report

Transcript Java 2주차 최종

JAVA
CHAPTER 4 ~ 5
2014.01.16 2주차
세부 계획
스터디 계획 및 Ch.1 ~
Ch.3
1주차
Ch.12 ~ Ch.13
6주차
Ch.4 ~ Ch.5
2주차
Ch.14 ~ Ch.15 (선택)
7주차
Ch.6 ~ Ch.7
3주차
Ch.16 ~ Ch.17 (선택)
8주차
Ch.8 ~ Ch. 9
4주차
프로그램 1주차
9주차
Ch.10 ~ Ch.11
5주차
프로그램 2주차
10주차
프로그래밍 계획
• 채팅 프로그램
• TCP/IP 프로그래밍의 프로그램
을 JAVA로 구현
• 환경
• 이클립스 Window Builder
• 방향
• 준비 : 2 ~ 5 주차 ( 규약 )
• 코딩 : 9 ~ 10주차 ( 규약 )
채팅 프로그래밍 구상 ( 2주차 )
① TCP/IP에서 만든 채팅프로그램을 Java 기반으로 변
② 이모티콘 및 사진 전송 구현
③ 파일 전송 구현
④ 프로필 구현
⑤ 공지 구현
CHAPTER 4 ~ 5
자바의 특징
• 자바는 객체 지향적 언어!
• 캡슐화
• 상속
• 다형성
클래스의 구성
필드
생성자
메소드
객체 생성 : 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
O
O
다른 패키지의 클래스
X
X
X
O
STATIC 멤버
• 객체를 생성하지 않고도 사용할 수 있는 멤버를
static 멤버라 한다.
• static 멤버는 클래스당 하나씩 생긴다고 해서 클
객체.static부른다.
래스사용1.
멤버라고도
멤버
사용2. 클래스
명.static 멤버
객체.static필드
객체.static메소드
클래스명.static멤버
STATIC 멤버(2)
static의 활용
• 전역 변수와 전역 함수를 만들 때 활용한다.
• 공유 멤버를 만들고자 할 때 활용한다.
static 메소드의 제약 조건
• static 메소드는 오직 static 멤버만 접근할 수
있다.
• static 메소드에서는 this 키워드를 사용할 수
없다.
THIS()
• 한 클래스내의 한 생성자에서 다른 생성자를 호
출할때 사용함
• This() 특징
• 생성자 코드에서만 사용
• 동일한 클래스내의 다른 생성자를 호출
• 반드시 생성자의 첫 번째 문장에서 사용되어
야함
FINAL
• final 클래스 - 더 이상 클래스 상속 불가능
• final 메소드 - 더 이상 오버라이딩 불가능
• final 필드, 상수 정의
• 상수를 정의할 때 사용
생성자 내에서는 final 멤버변수의 초
기화가 가능하다!
• 상수 필드는 선언 시에 초기 값을 지정하여야 한다
• 상수 필드는 한 번 정의되면 값을 변경할 수 없다
class SharedClass {
public static final double PI =
3.141592653589793;
}
상속
• 상위 클래스의 특성을 하위 클래스에 물려주는
것
public class Person { ... }
public class Student extends Person { // Person을 상속받
는 클래스 Student 선언 ... }
• 슈퍼 클래스 (superclass)
public class StudentWorker extends Student { // Student를
상속받는 StudentWorker 선언 ... }
• 서브 클래스 (subclass)
• 슈퍼 클래스에서 하위 클래스로 갈 수록 구체적
• 상속을 통해 서브 클래스의 간결한 클래스 정의
상속의 필요성
• 클래스 사이의 멤버 중복 선
언 방지
• 필드와 메소드 재사용으로
말하기
클래스 간결화
먹기
class Person
걷기
• 클래스 간 계층적 분류 및 관 잠자기
리
상속을 이용한
경우 중복이 제거되
간결해진 클래스 구
상속
class Student
공부하기
상속
class StudentWorker
일하기
연구하기
class Researcher
상속
가르치기
class Professor
18
상속의 특징
• 다중 상속 지원하지 않는다
• 상속의 횟수에 제한을 두지 않는다
• 계층구조의 최상위에 있는 클래스는 java.lang.Object 클
래스이다.
5.3 상속과 접근지정자
접근지정자
•
Private 멤버
•
Protected 멤버 : 같은패키지든 다른패키지든 상속받는 서브클래스에는 접근
허용, 같은 패키지에 속한 다른클래스에도 허용
•
Public 멤버
•
Default 멤버
슈퍼클래스멤 슈퍼클래스 멤버의 접근 지정자
버에 접근하는 default
private
Protected
클래스 종류
public
같은패키지의
클래스
O
X
O
O
다른패키지의
클래스
X
X
X
O
같은 패키지의 O
서브클래스
X
O
O
다른 패키지의 X
서브클래스
X
O
O
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를 붙
여 추상 클래스임을 명시해야 컴파일 오류가 발생하지 않는
다.
인터페이스
• 인터 페이스란?
: 인터페이스는 서로 다른 하드웨어 장치들이 상호 접속
하여 데이터를 주고 받을 수 있는 규격을 의미 한다.
• 자바 인터페이스란?
: 추상클래스와 유사하며 interface 키워드를 사용하여 선
언한다.
멤버는 추상메소드와 상수만으로 구성된다.
모든 메소드는 public 이며 생략이 가능하다.
인터페이스의 객체를 생성 할 수 없다.
다른 인터페이스에 상속 될 수 있다.
인터페이스도 레퍼런스 변수의 타입으로 사용가능 하
다.
인터페이스의 특성
인터페이스의 다중구현
실습