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 이며 생략이 가능하다. 인터페이스의 객체를 생성 할 수 없다. 다른 인터페이스에 상속 될 수 있다. 인터페이스도 레퍼런스 변수의 타입으로 사용가능 하 다.
인터페이스의 특성
인터페이스의 다중구현
실습