public class Police {
private Gun gun;
public void setGun(Gun gun) {
this.gun = gun;
}
public Gun getGun(){
return this.gun;
}
}
Theif.java
public class Theif {
private Gun gun;
public void setGun(Gun gun){
this.gun = gun;
}
public Gun getGun(){
return this.gun;
}
}
Gun.java
public class Gun {
public void shoot(){
System.out.println("권총 발사!");
}
}
InnerClassExample01.java
public class InnerClassExample01 {
public static void main(String[] args){
Police police = new Police();
Theif theif = new Theif();
Gun gun1 = new Gun();
Gun gun2 = new Gun();
police.setGun(gun1);
theif.setGun(gun2);
police.getGun().shoot();
theif.getGun().shoot();
}
}
Police.java
public class Police {
private Gun gun;
public Gun getGun(){
return this.gun;
}
public Police(){
this.gun = new Gun();//내부에서 생성
}
//Gun을 중첩 클래스로 구현(경찰만 사용하는 클래스)
//접근제한을 private으로 하면 외부에서 형태조차 파악할 수 없다.
private class Gun {
public void shoot(){
System.out.println("권총 발사!");
}
}
}
Theif.java
public class Theif {
//아래 코드들은 모두 오류가 발생한다.
//private Gun gun;
//public void setGun(Gun gun){
// this.gun = gun;
//}
//public Gun getGun(){
// return this.gun;
//}
}
InnerClassExample02.java
public class InnerClassExample02 {
public static void main(String[] args){
Police police = new Police();
Theif theif = new Theif();
police.getGun().shoot();
}
}