N스크린하이브리드앱과정/JAVA

[4주][1일][3~4th] JAVA: 중첩클래스(nested class)

광천스러움 2013. 8. 5. 14:10

☆ 실습(1) - outer, inner 클래스

 - 내부클래스 선언 방법(9번, 13번)

    : 외부클래스명.내부클래스명 참조변수명 = 외부클래스객체.new 내부클래스

 - 메인메서드와 동일한 급의 내부클래스를 만들 수 있다.

 - inner클래스에서 외부클래스의 멤버변수 a,b,c를 출력하려면, 위와 같이 내부클래스 선언 방법에 따

    라 인스턴스를 생성하여야 한다.

 

결과

 

 


 실습(2) - 지역변수와 지역내부클래스

 - 클래스 멤버변수의 위치는 실습(1)과 같지만, 메인메서드와 같은 레벨의 위치에 outerMethod() 메

    서드가 하나 생겼고, 그 안에 지역변수 d,e가 추가되었다.

 - 이 케이스는 실습(1)처럼 내부클래스의 인스턴스를 생성하지 않는다.

 - 대신 outerMethod()안에서, 지역내부클래스의 인스턴스를 생성하고 내부메서드를 호출한다.

 - 마지막으로 메인메서드에서 인스턴스를 생성하여 outerMethod()를 호출하면 끝!  

 - d는 지역변수이므로 inner클래스에서 출력이 불가능하지만, 상수 e는 출력이 가능하다.

 

결과

 

 

 실습(3) - 

 - 본래는 outer클래스가 필수였으나, 내부클래스가 static일 경우 outer클래스를 생성하지 않아도 접

    근 가능하다.

 - 단, 외부클래스에 있는 static 멤버변수 c를 제외한 a,b는 출력을 포기해야 한다. 

 

결과

 

 

 실습(4) - 추상메서드 구현의 간소화!

 - 5~10번까지의 코딩은, 이제까지 본 오버라이딩 방법과 다르게 느껴질 것이다.

 - 인터페이스에서 몸통 없는 fly() 추상메서드를 강제 구현 지정하였기 때문에, fly() 추상메서드는 꼭 

    구현되어야 한다!

 - 기존에는 Ex4에 Flyer를 implements 해야 하나, 아래 그림과 같이 간소화할 수 있다!

 - 이 기법은 나중에 안드로이드를 배울 때 자주 쓰인다.

 

결과

 

 

 실습(5) - java.util의 랜덤함수

 - math.랜덤함수보다 훨씬 편리하다.

 - 정수는 nextInt() 메서드를 사용한다.

 - nextInt(100)이라면, 0~99까지라는 의미이다.

 - 그 밖에도 nextFloat, nextBoolean 등이 있다.

 

결과