티스토리 뷰

[JAVA스터디] 자바 스터디-class편 03 클래스고급2
 목차
1-static

2-singleton 패턴

3-final

4-abstract class

5-interface

6-내부 클래스  -member내부 클래스
                        -local 내부 클래스
                        -static 내부 클래스

//////////////////////////////////////////////////////////
1-static
//특징
-프로그램 실행 시 static으로 지정된 클래스의 멤버가 자동으로 메모리에 로드된다.
-프로그램 종료시 소멸된다.
-객체 생성과 무관하다(객체 생서이 이전인 프로그램 시작과 관련이 있다.
-단한번 실행된다
-static 멤버 접근은 "클래스이름.멤버" 로 접근한다.
-대표적인 메소드는  main메소드

//사용
-클래스 : inner클래스에서 사용
-멤버 변수 : 인스턴스간 공유목적으로 사용
-멤버 메소드 : 객체 생성없이 접근할 목적으로 사용

---------------------------------------------------------------------------------------------------




2-singleton 디자인 패턴
//정의 : 단 하나의 인스턴스만 생성하는 경우에 사용할수 있는 stsaic을 이용한 패턴

//작성단계 :
     1) 생성자를 private로 지정한다.

    2) 자신의 클래스에서 객체를 생성한다.
          -static으로 지정하여 프로그램 실행시 객체 생성이 된다.

    3) 다른클래스에서 접근할수 있는 방법을 제공한다.
          -객체 생성 없이 접근할수 있는 방법으로 제공한다.
          -메소드 접근은 클래스 이름.메소드로 접근

  


3-final
//특징 : 금지와 관련이 있음
//용도 :
     1)클래스에 쓰이면 상속금지
    2)멤버 메소드에 쓰이면 overriding금지
    3)멤버 변수에 쓰이면 상수가 된다

- 상수?
프로그램 시작부터 끝까지동일한 값을 유지
모든클래스에서 동일한 값을 공유해야함
대문자로 상수명을 지정

문법   public static final TOTAL_NUM=40;




4-abstract class
//정의 : 구현되지 않고 추상적인(구현안된)의 의미
              내용은 없고 껍데기만있는것을 의미
//용도 : 
1)클래스 - 추상클래스
-추상 클래스
//정의 : 클래스 생성시 abstract 지정자로 선언된 클래스.
//특징
    객체 생성불가
    멤버 : 멤버 변수, 생성자, concrete메소드, abstract메소드등 모두 가능
    추상메소드 없어도 추상클래스 선언 가능
    추상메소드가 있으려면 반드시 추상클래스가 있어야 함
    하위클래스 이용하여 멤버 재사용
    type으로 사용 가능하다.
    하위 클래스에 강제성과 통일성을 줄수있다.
//용도
    하위클래스에서 반드시구현해야 하는 메소드를 상위클래스에서 정의할때 상위클래스에서 메소드 구현을 하지 않고 실제 구현은 하위클래스에서 한다.
    이때 상위 클래스에서 메소드는 추상 메도드로 선언하여 강제성과 통일성을 줄 수 있다.
2)멤버메소드 - 추상메소드
  • -추상 메소드?
    구현되지 않은 메소드. 즉 body가 없는
    문법   public abstract void run();
    -구현메소드?
    구현된 메소드, 즉 body가 있는 메소드
    문법       public void run(){.................}

상위클래스에서 선언한걸 하위 클래스에서 구체화
강제성, 통일성을준다.
재사용 가능!

5-interface
//정의: 클래스 대신 interface로 선언한 객체를 의미
//특징
     1) 객체 생성이 불가능    
    2) 멤버:상수, 추상 메소드만 사용 가능하다.
    3) 하위클래스를 이용하여 멤버를 재사용한다.
    4) Type로 사용가능하다.
    5) 하위클래스에 강제성과 통일성을 줄수 있다.
    6) 단일상속의 단점을 보완할수 있다.
    7)하위클래스에서는 extends   대신 implements를 사용한다.
    8)하위클래스에서는  다중 implements가 가능하다.

//용도
기능만을 상위클래스에서 하위클래스로 강제하기위해 사용된다.



6-내부 클래스 
//정의-특정 클래스 내부에 특정클래스가 정의되는것.
//용도- 서로 독립적인 관계가 아닌 하나의 멤버처럼 사용할수 있는 경우 사용
          - 대표적으로 GUI 와 GUL 이벤트 를 구현할때 사용되어질수 있다.
//특징- 내부 클래스는 외부 클래스의 모든 멤버를 자신의 멤버 처럼 사용할수 있다.
          - static내부 클래스를 제외한 다른 모든내부클래스는 항상 외부 클래스를 이용하여 접근할수 있다.

//종류 

-local 내부 클래스
 -static 내부 클래스
-member내부 클래스


 -member내부 클래스
 외부 클래스 의 멤버처럼 정의된 클래스

내부 클래스를 생성하려면 먼저 외부 클래스를 생성해야 된다.


-local 내부 클래스
외부 클래스의 멤버 메소드 안에서 정의된 클래스

멤버 메소드 안에서 내부 클래스를 객체생성한다.

멤버메소드의 로컬변수와 같이 작동한다.

메소드 호출시 생성되고 끝나면 소멸한다.

외부 클래스의 멤버 변수와 상수만 접근 가능하다.


-static 내부 클래스
내부 클래스 내에 static멤버가 있는 경우에 static내부 클래스로 정의 한다.

외부 클래스의 멤버 변수 접근은 불가

                       
                        
                       







댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함