内部类拥有对外部类的访问权限。同时内部类和普通类一样,可以实现(implements)某一个接口。
根据以上两点,可以在一个类中声明多个内部类,而这多个内部类都实现了同一个接口,只是具体的实现方式不一样。这样就可以能过不同的内部类,以不同的方式对外部类进行处理,达到不同的效果。
以下是一个示例,用来描述用不同的方法做一条鱼:
Cook是一个接口,BoilFish和FryFish这两个内部类都实现了这个接口,分别用来描述煮和炸…它们都可以访问外部类(CookFish)中的元素,Fish。只是经过不同的处理,Fish分别成为了水煮的鱼和炸鱼…
CookFish.java:
- package com.xyn.cp08;
-
- interface Cook{
- public void doCook();
- }
-
- class Fish{
- private String cookMethod;
-
- public String getCookMethod() {
- return cookMethod;
- }
-
- public void setCookMethod(String cookMethod) {
- this.cookMethod = cookMethod;
- }
-
- }
-
- public class CookFish {
- public Fish fish = new Fish();
- //inner class BoilFish implements the interface:Cook
- class BoilFish implements Cook{
- public void doCook() {
- fish.setCookMethod("boil fish!");
- //inner class can access elements of outer class.
- }
- }
- //inner class FryFish also implements the interface:Cook
- class FryFish implements Cook{
- public void doCook() {
- fish.setCookMethod("fry fish!");
- }
- }
-
- public BoilFish getBoilFish(){
- return new BoilFish();
- }
- public FryFish getFryFish(){
- return new FryFish();
- }
-
- public static void main(String[] args) {
- CookFish cookFish = new CookFish();
- Cook cook = cookFish.getBoilFish();
- //boil fish
- cook.doCook();
- System.out.println(cookFish.fish.getCookMethod());
- //fry fish
- cook = cookFish.getFryFish();
- cook.doCook();
- System.out.println(cookFish.fish.getCookMethod());
- }
- }
十
18
This entry was posted
on 星期四, 十月 18th, 2007 at 12:01 上午and is filed under 技术资料.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
Leave a Reply