본문 바로가기

[JAVA]

[JAVA]9월 22일 내부 클래스, 무명클래스

내부 클래스(inner class): 클래스 안에 다른 클래스를 정의

·특정 멤버 변수를 private로 유지하면서 자유롭게 사용할 수 있다.
·특정한 곳에서만 사용되는 클래스들을 모을 수 있다.
·보다 읽기 쉽고 유지 보수가 쉬운 코드가 된다.
ex)public class OuterClass {
private String secret = "Time is Money";
public OuterClass(){
InnerClass innerClass = new InnerClass();
innerClass.method();
}
private class InnerClass{  //OuterClass 에서만 사용가능.
public InnerClass(){
System.out.println("InnerClass의 생성자");
}
public void method(){
System.out.println(secret); //자기가 속한클래스의 private멤버에 접근가능
}
}
}

클래스 : 관련있는 변수와 함수들을 묶어놓은것.

인터페이스 : 관련있는 기능을 가진 추상메소드 들을 묶어놓은것.(하나의 타입이나 객체화가 안됨.)

인터페이스를 상속 받는 방법은 Implements 사용.(상속 받았을때 인터페이스에 있는 모든 메소드를 구현해야 하는 의무를 가짐.)

☆↓

1번 :  부모클래스는 추상메소드로 기능의 틀만 정의         (멤버 변수와 추상메소드 상속)

      자식클래스에서 각자 자기에 맞는 기능을 구현

2번 :  각 기능에 대해 인터페이스 작성 후 개별 클래스로 기능들을 구현  (기능 분리 (각자 분리된 기능 중 하나를 선택해서 객체화))

       부모클래스에서는 인터페이스(슬롯)을 멤버변수 가짐

       자식 클래스에서 원하는 기능을 멤버변수(인터페이스 슬롯)에 객체 할당

       자기 자신에 맞는 기능을 구현한 함수에서 인터페이스의 메소드 호출.

3번 :  각 기능에 대해 인터페이스로 작성후 개별클래스로 기능 구현            (분리된 기능을 외부에서 객체화 해서 주입)

       Context 클래스에서 인터페이스(슬롯)을 멤버변수 로 가지고 setter제공

       Context를 사용하는 주체(메인함수)에서 사용할 기능클래스의 객체를 만들어서 Context에 조립/사용.


추상클래스, 인터페이스는 객체가 될 수 없음

>> 왜냐면 미완성인 추상메소드를 가지고 있어서.

무명클래스 문법을 사용 하시면 1회성으로 추상메소드를 구현하시면서 객체로 만들 수 있음.

new ClssOrinterface() { 클래스의 몸체 }  << new 옆에 부모 클래스 이름이나 인터페이스 이름


자주 쓰일것 같은 인터페이스의 구현함수는 클래스로 implements 하고

자주 쓰일것 같지 않고 간단한 구현은 무명클래스로 가볍게 사용.

무명클래스 ex)


여러개의 인터페이스를 구현할 수 있다.

ex) public class SmartTv implements RemoteControl, Searchable;

여기서 리모트컨트롤 과 서치 기능은 인터 페이스.

이렇게 됬을때 스마트 티비는 리모트 와 서치 인터페이스의 추상 메소드를 완성해야할 의무 가 생김.


인터페이스 간의 상속이 가능하다.

ex) public interface InterfaceA{

public void methodA(); }

public interface InterfaceB extends InterfaceA{    // 인터페이스B 는 인터페이스 A 를 상속 받았다.

public void methodB(); }


public class A implements InterfaceB {           //A 라는 클래스에 인터페이스B 를 구현하면 

public void methodA();{                           // 인터페이스 A ,B 의 추상메소드를 완성 하라는 의무를 가지게됨.

}

public void methodB();{

}