package ch07;
public /* final */ class Father //final 상속시키지 않겠다고 명시한것.
{
//0604추가
public int money = 50000;
//Farmer에게 줄때는 계승관계가 아니니 소유..
public void giveMoney()
{
Farmer farmer = new Farmer(this);
farmer.receiveMoney();
Uncle uncle = new Uncle();
uncle.receiveMoney();
}
// 내부클래스 : 클래스안의 클래스의 형태로 본질은 외부에 클래스가 존재하는것과 다르지 않다.
// 멤버변수도 둘수 있으며, 멤버함수도 사용 가능하다.
// (다만 이너클래스가 존재하는 메인클래스에서만 사용이 가능하므로
// 모듈화 용도에는 적합하지 않다.)
//장점은 메인클래스의 멤버변수를 내것처럼 자유로이 참조하여 쓸 수 있다.
public /* final */ void work() // final 하위클래스에서 오버라이딩 허용안함.
{
System.out.println("아버지께서 일하셔"); //상속과 클래스 레퍼런스 관계 위해...
}
class Uncle
{
// public int a; //자유롭게 쓸수 있다.
// public void print()
// {
//
// }
public void receiveMoney()
{
money = money-20000;
}
}
}
***** ps.
내부 클래스 사용시.. 파일이름 저장방법.
"외부클래스이름$내부클래스이름.class"