JAVA공부하기127

패키지(package)

- JAVA에서는 서로 관련된 클래스를 하나의 단위로 그룹화

- 계층 구조를 이루고 있음(이름만)

- 소프트웨어 재사용을 위한 매커니즘

- C/C++의 라이브러리와 동일

- 사용방법은 C/C++과 전혀 다름

 

목적

- 클래스, 인터페이스, 부 패키지 이름의 우연한 충돌방지 및 관리 용이성

: 2개의 클래스 혹은 인터페이스가 이름이 서로 같아도 서로 다른 이름의 패키지에 속하면 구분

: name space 부여

 

- 패키지단위 접근권한지정

 

패키지 구성

- 패키지 이름 : 클래스 파일이 있는 폴더 구조

- 클래스 이름 : 실제 자바 api

 

 

 

패키지 구조

JAVA공부하기125


throw 예외처리


- throw를 사용해 사용자 임의대로 예외 발생이 가능

: 컴파일러가 인식하지 못하는 예외를 사용자가 새롭게 정의해서 사용 가능


: 새로운 예외 클래스를 만들 때에는 무조건 Exception클래스를 상속 해야함


: 컴파일러가 인식하는 예외를 사용자가 다른 예외클래스로 바꿔 발생시키고자 

  할 때도 사용가능





JAVA공부하기 124

예외처리의 응용


- throw

: 사용자가 에러이벤트를 발생

: 발생된 이벤트는 반드시 catch로 받아야함




- throws

: 예외처리 미루기

: 컴파일러에게 메서드 사용시에 예외가 발생할 수도 있다는 것을 사전에 알림




JAVA공부하기 113.

내부클래스

 

- 내부 클래스의 모든 인스턴스는 그 클래스를 정의하거나 포함하고 있는 클래스의 인스턴스와 내부적으로 연관된다.

 

- 내부클래스의 메소드는 멤버클래스의 필드 뿐만아니라 그 클래스를 포함하고 있는 외부클래스의(Private필드 포함) 모든 필드 참조 가능

 

- 내부 클래스는 어떤 static 멤버도 가질 수 없다.

 

클래스 메소드 내부에는 묵시적으로 this 생략가능하다

 

멤버 클래스의 인스턴스 생성 방법

 

LinkecList aList = new LinkedList();

Enumerator naEnum = aList.new Enumerator();

 

 내부 클래스 예

 

 

JAVA공부하기 111

중첩클래스

 

- 중첩 클래스는 필드나 메소드가 클래스 내부에 정의될 수 있듯이 클래스가 다른 클래스의 멤버로 정의될 수 있는 기능을 의미한다.

 

- 코드 블록에서 변수를 정의하듯 클래스를 코드블록 내부에 정의한다.

: 기존에는 모두 클래스는 코드 블록 외부에 정의되었다.

 

- X$Y.class와 같은 형태의 클래스 파일

: X 클래스에 중첩된 Y클래스

 

 

 

JAVA공부하기 110

instanceof

 

//InstanceofTest1.java

class Element {int atomicNumber;}

class Point extends Element {int x, y;}

class InstanceofTest1 {

public static void main(String[] args) {

Element e = new Element();

Point p = new Point();

if (e instanceof Point) {

Stystem.out.println("First Test : I get your point !");

p = (point)e;

}

e = p;

if (e instanceof Point) {

System.out.println("Second Test : I get your point!");
p = (Point)e;

}

if (e instanceof Element) {

System.out.println("Third Test : I get your Element!");

p = (point)e;

}

}

}

 

 

 

 

자바공부하기 107

upcasting과 downcasting의 실제 구현

 

import java.util.Vector;

 

public class upDownCasting {

public static void main(String[] args) {

String name = new String("홍길동");

Integer id = new Integer(1000);

Vector v = new Vector();

v.addElement(name);

v.addElement(id);

 

//upcasting

Object obj1 = v.elementAt(0);

Object obj1 = v.elementAt(1);

 

//Downcasting

String str = (String)obj1;

Integer num = (Integer)obj2;

System.out.println("이름:" + name + "번호:" +num);

String str2 = (String)v.elementAt(0);

Integer num2 = (Integer)v.elementAt(1);

System.out.println("이름" + name + "번호:" + num);

}

}

 

- Vector는 객체 저장소 / Object형만을 저장할 수 있음

- 저장은 Upcasting / 추출은 Downcasting

 

 

 

 

자바공부하기 105

 

추상클래스와 Interface의 Upcasting

 

* 자체적으로 객체 생성이 불가능

-  Upcasting 기법을 통해 객체 생성

-  가상 메서드를 통한 객체 은닉 구현

 

 

+ Recent posts