sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
18. 수정자(modifier) <교재 194page>
1) final : class, method, 변수에서 사용
2) static : method, 변수에서 사용가능 하지만 class 에서 사용못함 (예외:Inner class는 가능)
3) abstract : class, method에서 사용가능 하지만 변수는 사용못함
4) native
5) synchronized(동기화)
6) trasident
19. 상수 선언
- final static int a=10;
20. 추상 클래스 <교재 206page>
- 추상 method를 하나 이상 가지면 추상 클래스가 된다.
- abstract 반환형 메서드이름(인자);
- memeber들을 사용하고자 할 경우 후손 클래스에게 상속시켜 구현하고 사용한다.
- 상속시킨후 구현하지 않으면 후손 class도 abstract class가 되므로 주의!!
21. INTERFACE : 선언된 method만 가진다.
선언형식) 접근제어자 + interface + interface이름{}
1) class의 일종으로 interface라는 키워드 사용
2) 선언된 method + 상수(변수아님)만을 가지고 구현은 하지 않으므로 interface의 생성자는 없다
3) abstract 생략 가능
4) 생성자가 없기 때문에 new 사용하여 객체 생성 불가
5) 추상클래스와 마찬가지로 하위 class로 implements하여 추상 메소드를 반드시 구현하여 사용한다.
(override이므로 override 규칙을 반드시 지켜서 구현한다)
6) interface끼리의 상속이 가능하다 --> extends로써 상속 ex) public interface interface이름 extends 상위interface이름
7) 클래스에서 interface로의 상속은 불가능하다.
8) 다중상속이 가능하다. ex) class A extends B implements C,D,E,F...;
22. 내부CLASS(Inner class, 중첩(Nested class))
- 목적 : 특정 다른 클래스가 어떠한 클래스 내부의 맴버변수나 메서드에 접근을 자주 해야 하는 경우에 자신과 밀접한 관련이 있고
자신의 클래스 내부적인 용도로만 사용하고자 하는 경우
선언형식) class OuterClass이름
{
.
.
.
class InnerClass이름
{
.
.
.
}
}
1) 같은 file에서 Inner class객체 생성
class A
{
.
.
.
class B
{
int a=10;
public void b(){...}
}
public static void main(String ar[])
{
B B=NEW B();
b.a=100;
b.b();
}
}
- 컴파일하면 A.class와 A$B.class화일이 생성된다.
2) 외부 file에서 Inner class인 B클래스를 참조하려면...
class C
{
public static void main(...)
{
A a=new A(); //B를 참조하기전에 outer class인 A클래스의 객체를 생성한다.
A.B b=a.new B(); //A객체의 클래스를 참조하여 B의 클래스의 객체를 생성한다.
// A.B b=new A.B(); //B가 static으로 선언된 경우는 위의 두줄을 이렇게 한줄로도 가능하다.
}
}
- 결국 내부클래스를 사용하려면 외부클래스의 객체생성 뿐만 아니라 반드시 B의 객체생성도 필요하다.
3) OUTER CLASS에서 PRIVATE으로 정의된 변수나 메소드들을 INNER CLASS는 접근 가능하다.
4) 내부클래스는 외부클래스의 맴버변수와 메서드를 마음대로 사용 가능하다.
5) 내부클래스가 static으로 선언되었다면 외부클래스의 객체생성없이 outer.inner로 단독생성가능하다. (이유는 static수정자의 특징을 살펴보면 알 수 있을것이다)
6) 내부클래스의 객체생성은 외부클래스의 클래스이름을 참조하여 이루어진다.
※ Anonymous Inner Class의 특징
1) abstract, private, public, protected등을 사용할 수 없다.
2) 다중 implements도 불가능하다.
3) 반드시 final로 선언 해야한다.
4) static으로 선언가능하다.
5) abstract class를 상속받을 수 있다.
※ Static
1) static영역은 공용으로 사용되는 또다른 영역의 의미를 갖는다. 한 클래스내에 존재하는 메소드라 할지라도 static으로 선언된 메소드에서 일반메소드와 변수의 접근은 불가능하다.(그 반대는 항상 가능)
그 이유는 메모리 할당 순서에 있다. static영역은 구문번역시 자동할당되어 실행되지만 일반영역의 객체는 사용자의 new구문에 의해서만 생성이 가능하므로 생성이 이루어지건 안이루어지건간에 static영역에서 일반영역의 접근을 금지시킨다.
2) static 영역에서는 this 키워드를 사용할 수 없다.
3) Static변수는 메소드내에서 자동변수로는 사용할 수 없다.
static i=0; //메소드내에서는 static변수의 선언자체가 허용되지 않는다.
i++;
4) static inner class와 같이 inner class라 하더라도 메서드처럼 반드시 non static 초기화멤버만 사용 가능한 것은 아니다. inner class도 당연히 class이므로 클래스레벨의 static변수 선언이 가능한 것이다.
5) class나 method가 static영역에서 선언된다면 일반영역에서 선언된 변수의 사용은 불가하다.
6) static inner class는 enclosing class의 객체를 참조할 필요가 없으며 static inner class의 static member는 또는 static inner class의 이름으로 참조가능하다. static inner class는 static initialize를 요구하지 않는다.
7) main함수가 외부클래스내에 존재할 경우 내부클래스의 객체생성
: 선언은 외부클래스의 참조없이, 생성은 외부클래스의 객체를 참조해야만 가능하다.
8) main함수가 외부클래스밖에 존재할 경우 내부클래스의 객체생성
: 선언은 외부클래스의 이름을 참조하고 생성은 외부클래스의 객체를 참조해야만 한다.
※ Abstract
1) 추상메소드(Abstract method)를 구현할시에 접근제어자를 private으로 할 수 없다.
오늘의 예제 :: [4]
1) final : class, method, 변수에서 사용
2) static : method, 변수에서 사용가능 하지만 class 에서 사용못함 (예외:Inner class는 가능)
3) abstract : class, method에서 사용가능 하지만 변수는 사용못함
4) native
5) synchronized(동기화)
6) trasident
19. 상수 선언
- final static int a=10;
20. 추상 클래스 <교재 206page>
- 추상 method를 하나 이상 가지면 추상 클래스가 된다.
- abstract 반환형 메서드이름(인자);
- memeber들을 사용하고자 할 경우 후손 클래스에게 상속시켜 구현하고 사용한다.
- 상속시킨후 구현하지 않으면 후손 class도 abstract class가 되므로 주의!!
21. INTERFACE : 선언된 method만 가진다.
선언형식) 접근제어자 + interface + interface이름{}
1) class의 일종으로 interface라는 키워드 사용
2) 선언된 method + 상수(변수아님)만을 가지고 구현은 하지 않으므로 interface의 생성자는 없다
3) abstract 생략 가능
4) 생성자가 없기 때문에 new 사용하여 객체 생성 불가
5) 추상클래스와 마찬가지로 하위 class로 implements하여 추상 메소드를 반드시 구현하여 사용한다.
(override이므로 override 규칙을 반드시 지켜서 구현한다)
6) interface끼리의 상속이 가능하다 --> extends로써 상속 ex) public interface interface이름 extends 상위interface이름
7) 클래스에서 interface로의 상속은 불가능하다.
8) 다중상속이 가능하다. ex) class A extends B implements C,D,E,F...;
22. 내부CLASS(Inner class, 중첩(Nested class))
- 목적 : 특정 다른 클래스가 어떠한 클래스 내부의 맴버변수나 메서드에 접근을 자주 해야 하는 경우에 자신과 밀접한 관련이 있고
자신의 클래스 내부적인 용도로만 사용하고자 하는 경우
선언형식) class OuterClass이름
{
.
.
.
class InnerClass이름
{
.
.
.
}
}
1) 같은 file에서 Inner class객체 생성
class A
{
.
.
.
class B
{
int a=10;
public void b(){...}
}
public static void main(String ar[])
{
B B=NEW B();
b.a=100;
b.b();
}
}
- 컴파일하면 A.class와 A$B.class화일이 생성된다.
2) 외부 file에서 Inner class인 B클래스를 참조하려면...
class C
{
public static void main(...)
{
A a=new A(); //B를 참조하기전에 outer class인 A클래스의 객체를 생성한다.
A.B b=a.new B(); //A객체의 클래스를 참조하여 B의 클래스의 객체를 생성한다.
// A.B b=new A.B(); //B가 static으로 선언된 경우는 위의 두줄을 이렇게 한줄로도 가능하다.
}
}
- 결국 내부클래스를 사용하려면 외부클래스의 객체생성 뿐만 아니라 반드시 B의 객체생성도 필요하다.
3) OUTER CLASS에서 PRIVATE으로 정의된 변수나 메소드들을 INNER CLASS는 접근 가능하다.
4) 내부클래스는 외부클래스의 맴버변수와 메서드를 마음대로 사용 가능하다.
5) 내부클래스가 static으로 선언되었다면 외부클래스의 객체생성없이 outer.inner로 단독생성가능하다. (이유는 static수정자의 특징을 살펴보면 알 수 있을것이다)
6) 내부클래스의 객체생성은 외부클래스의 클래스이름을 참조하여 이루어진다.
※ Anonymous Inner Class의 특징
1) abstract, private, public, protected등을 사용할 수 없다.
2) 다중 implements도 불가능하다.
3) 반드시 final로 선언 해야한다.
4) static으로 선언가능하다.
5) abstract class를 상속받을 수 있다.
※ Static
1) static영역은 공용으로 사용되는 또다른 영역의 의미를 갖는다. 한 클래스내에 존재하는 메소드라 할지라도 static으로 선언된 메소드에서 일반메소드와 변수의 접근은 불가능하다.(그 반대는 항상 가능)
그 이유는 메모리 할당 순서에 있다. static영역은 구문번역시 자동할당되어 실행되지만 일반영역의 객체는 사용자의 new구문에 의해서만 생성이 가능하므로 생성이 이루어지건 안이루어지건간에 static영역에서 일반영역의 접근을 금지시킨다.
2) static 영역에서는 this 키워드를 사용할 수 없다.
3) Static변수는 메소드내에서 자동변수로는 사용할 수 없다.
static i=0; //메소드내에서는 static변수의 선언자체가 허용되지 않는다.
i++;
4) static inner class와 같이 inner class라 하더라도 메서드처럼 반드시 non static 초기화멤버만 사용 가능한 것은 아니다. inner class도 당연히 class이므로 클래스레벨의 static변수 선언이 가능한 것이다.
5) class나 method가 static영역에서 선언된다면 일반영역에서 선언된 변수의 사용은 불가하다.
6) static inner class는 enclosing class의 객체를 참조할 필요가 없으며 static inner class의 static member는 또는 static inner class의 이름으로 참조가능하다. static inner class는 static initialize를 요구하지 않는다.
7) main함수가 외부클래스내에 존재할 경우 내부클래스의 객체생성
: 선언은 외부클래스의 참조없이, 생성은 외부클래스의 객체를 참조해야만 가능하다.
8) main함수가 외부클래스밖에 존재할 경우 내부클래스의 객체생성
: 선언은 외부클래스의 이름을 참조하고 생성은 외부클래스의 객체를 참조해야만 한다.
※ Abstract
1) 추상메소드(Abstract method)를 구현할시에 접근제어자를 private으로 할 수 없다.
오늘의 예제 :: [4]
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
43 | JDF(Java Development Framework) 관련 | 황제낙엽 | 2004.02.11 | 505 |
42 | JDBC Date 포맷 변환 | 황제낙엽 | 2003.11.08 | 938 |
41 | Connection 리소스 관리시 주의해야 할 점 | 황제낙엽 | 2003.09.06 | 429 |
40 | XSLTFilter ... (퍼옴) | 황제낙엽 | 2003.07.21 | 634 |
39 | (초보탈출 II) 내부클래스 | 황제낙엽 | 2003.05.20 | 505 |
38 | (초보탈출 I) 패키지 | 황제낙엽 | 2003.05.20 | 544 |
37 | 열네번째날 (화상 채팅 프로그램 프로젝트) | 황제낙엽 | 2003.04.21 | 945 |
36 | 열세번째날 - WEB APPLICATION | 황제낙엽 | 2003.04.15 | 824 |
35 | 열두번째날 - I/O | 황제낙엽 | 2003.04.15 | 285 |
34 | 열하나째날 - 스레드 | 황제낙엽 | 2003.04.15 | 330 |
33 | 열번째날 - 애플릿과 그래픽 | 황제낙엽 | 2003.04.15 | 617 |
32 | 아홉째날 - SWING | 황제낙엽 | 2003.04.15 | 544 |
31 | 여덟째날 - 예외처리 | 황제낙엽 | 2003.04.14 | 527 |
30 | 일곱째날 - EVENT | 황제낙엽 | 2003.04.14 | 245 |
29 | 여섯째날 - AWT | 황제낙엽 | 2003.04.14 | 628 |
28 | 다섯째날 - Collection, String, StringBuffer | 황제낙엽 | 2003.04.14 | 562 |
» | 넷째날 - 추상클래스, 내부클래스, Interface, Static영역 | 황제낙엽 | 2003.04.14 | 566 |
26 | 셋째날 - 패키지, 상속, 접근제어 | 황제낙엽 | 2003.04.14 | 509 |
25 | 둘째날 - 클래스, 메서드, 연산자 | 황제낙엽 | 2003.04.14 | 482 |
24 | 첫째날 - 자바의 특징과 DATA TYPE | 황제낙엽 | 2003.04.14 | 457 |