15. 다중 클래스
: 하나의 파일에서 여러개의 클래스를 만들수 있음
(단, public class는 하나만 존재, main()메소드가 있는 클래스에)
============================================================
16. 오브젝트(클래스) 배열
<형식> 클래스명 object명[] = new 클래스명[첨자];
object명[0] = new 클래스명(인자,인자..);
============================================================
17. 상속(Inheritance)
: 코드의 재사용 및 간결성을 위해
기존의 클래스(Super, Parent)라하고 확장하여 새롭게 정의한 클래스를
(Sub, Child)라 부른다. 다중상속 안됨
ex) class Parent
{
};
class Child extends Parent //extends(상속)
{
}
(다중상속이 안됨, 저장파일 : main이 들어있는 클래스명과 동일)
============================================================
18. this예약어
: this예약어는 자신의 오브젝트를 가리키는 예약어
①자신의 오브젝트속에 존재하는 멤버변수를 가리킬때
<형식> this.멤버변수 <--주로 매개변수이름과 동일할때 구별목적으로 사용
this.메소드()
②생성자 내부에서 자신의 클래스의 또다른 생성자를 지칭하는 메소드
<형식> this(값);
ⓐ반드시 생성자속의 첫번째 문장으로 기재
ⓑ자기자신클래스명 this <---0번째 매개변수는 기재할수 없다
============================================================
19. 공유필드를 위한 static (this변수 없다)
(1) static필드 :데이타 값의 공유를 위해 선언하는 공간(멤버필드만 가능)
①클래스이름으로 접근가능
②객체발생전 메모리할당
<형식> 클래스명.멤버변수 or 객체명.멤버변수
(2) static 초기화영역
<형식> static { 초기화구문; }
(3) static 메서드 : static필드를 컨트롤할 목적으로 쓰임
============================================================
20. final
① final 필드 : 상수값이 저장될 공간으로 값이 변경될수없음
(지역변수, 멤버필드 모두 사용가능)
② final 메서드 : 상속시 오버라이딩 되지 않아야할 메서드 지정
(overriding하게되면 error발생)
============================================================
21. super의 사용
<-- 반드시 생성자속의 첫번째 문장으로 기재(1번만 기재)
: 후손생성자속에서 선조생성자를 호출하면서 값을 올려줌
super() <--생략가능 / super(인자,인자...) / super.메소드()
============================================================
22. 접근지정자
(1)private : 하나의 클래스내에서만 사용가능한 멤버지정
(2)package(아무것도 기재하지 않음,default라고도 함)
: 동일파일 + 동일폴더
(3)protected : 동일파일 + 동일폴더 + 상속
(4)public : 객체를 가진 모든 영역
public > protected > default(생략) > private
같은패키지 다른패키지
---------------------------------------------------------------
같은클래스 |다른클래스 | 상속 클래스 | 상속
---------------------------------------------------------------
public O O O O O
protected O O O X O
default(생략) O O O X X
private O X X X X
===============================================================
23. 다형성(polymorphism)
: super(부모)클래스와 sub(자식)클래스에 동일한 이름의 함수가
존재(Overriding)할 경우 super클래스의 참조변수로 sub클래스의
인스턴스를 참조할수 있다.
================================================================
24. abstract class (추상 클래스)
(1)추상클래스
①추상클래스(abstract class)란?
: 클래스의 내용이 구현되지 않은 클래스로,즉 해당 클래스의 메소드중
하나라도 구현되어 있지않고(=몸통이 없고) 메소드 이름만 가지고 있는
클래스를 말한다.
②추상클래스를 사용하는 이유?
- 객체 생성을 하지 못하도록 하기 위해서이다.
- 하위클래스들이 특정메소드(추상메소드)를 반드시 구현하도록 강제할 수
있도록 하기 위함이다(강제overriding)
- 다형성을 위해 존재
③추상클래스 사용방법
: abstract키워드를 사용한다.
<형식> abstract class 클래스 이름{
abstract 추상메소드이름
}
================================================================================
25. 인터페이스(Interface):다중상속가능
: 자바는 단일상속만 지원하는데 이 단점을 보완하기 위해 나온 것으로
추상클래스와 달리 모든 메소드가 추상메소드이다.
사실, 인터페이스를 사용하는 가장 큰 목적은 다형성이다.
(1) 인터페이스의 특징.
- class 대신에 interface 키워드 사용.
- 멤버변수는 상수로 선언.즉 final 키워드를 사용한다는 것이고
변경할 수 없다(final은 생략가능.)
- 멤버메소드는 몸통이 없음.즉 abstract메소드이고 모든 메소드가
abstract이므로 생략가능.
- 부모의 인터페이스를 상속받을시는 extends 대신 implements 키워드 사용.
(2)인터페이스 형식
public interface 인터페이스이름{
... //상수선언. 상수선언이라 함은 final 키워드를 쓰는것.
... // 이름뿐인 메소드 선언
}
| 클래스 | 메소드 | 멤버변수/로컬상수
----------------------------------------------------------------------------------------
final | 상속불가 | 자식클래스에서 오버라이딩 불가 |변수값변경못함(즉,상수)
----------------------------------------------------------------------------------------
abstract | 추상클래스 | 추상메소드 | O
----------------------------------------------------------------------------------------
static | X | 객체생성없이 접근가능 | 객체생성없이 접근가능
----------------------------------------------------------------------------------------
public | 모두 접근가능 | 모두 접근가능 | 모두 접근가능
----------------------------------------------------------------------------------------
protected| X | 같은패키지,상속시 | 같은패키지,상속시
private | | 다른패키지/같은클래스 | 다른패키지/같은클래스
----------------------------------------------------------------------------------------
★ 자바에서 생략할수 있는 것
import java.lang.*;
default 생성자
this
메소드의 0번째 매개변수(반드시생략)
extends Object
super()
toString() -->toString()메소드는 어떤 형식을
String 오브젝트로 반환해주는 메소드입니다
======================================================================
26. 중첩(내부) 클래스
(1)중첩 클래스 (Inner Class)
①클래스 내부에 또 다른 클래스를 가짐으로 클래스 관리의 효율을 높인 것
(static 포함불가)
②중첩 클래스의 형식과 생성파일
형식) class Outer { class Inner { … } }
생성파일) Outer.class, Outer$Inner.class
③중첩 클래스 객체 생성
Outer.Inner oi = new Outer().new Inner(); // or 객체명.new Inner();
(2)정적 중첩 클래스(Static Inner Class)
①중첩 클래스 내부에 static 멤버를 포함할 수 있는 형태
(Outer의 non-static 멤버 포함 불가)
②정적 중첩 클래스의 형식과 생성파일
형식) class Outer { static class Inner {…} }
생성파일) Outer.class, Outer$Inner.class
③정적 중첩 클래스 객체 생성
Outer.Inner oi = new Outer.Inner();
(3)지역 중첩 클래스(Local Inner Class)
①메서드 실행 시에 사용되는 클래스를 정의한 형식으로 static지정어를 가질 수 없다.
②지역 중첩 클래스의 형식 및 생성 파일
형식) class Outer {
method() { class Inner { … } } }
생성파일) Outer.class, Outer$숫자Inner.class
③객체 생성은 외부에서 할 수 없다.
(4)익명 중첩 클래스(Anonymous Inner Class)
①기존 클래스의 특정 메서드를 오버라이딩 하여 원하는 형태로 재정의 하여
사용하는 방식( 외부 멤버 중 final만 포함할 수 있다)
②익명 중첩 클래스의 형식 및 생성파일
형식) class Inner { … }
class Outer { method() { new Inner() {…}}}
생성파일) Outer.class, Outer$숫자.class
③new Inner() 자체가 객체 생성임.
출처 : ITBANK 수업중..
'JAVA' 카테고리의 다른 글
[JAVA] JAVA 5 (0) | 2014.08.08 |
---|---|
[JAVA] JAVA 3 (0) | 2014.08.04 |
[JAVA] JAVA 2 (0) | 2014.08.03 |
[JAVA] JAVA 기본 (0) | 2014.08.02 |