首页 > 编程语言 > 详细

从头认识java-8.2 链接到外部类

时间:2015-11-11 16:37:37      阅读:206      评论:0      收藏:0      [点我收藏+]

这一章节我们来讨论一下内部类链接到外部类的几个方面。

上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。

package com.ray.ch08;

public class Test {
	private int id = 0;

	public String name = "aaa";

	private void say() {
		System.out.println("Class Test Method say");
	}

	public void run() {
	}

	class Destination {
		private void print() {
			System.out.println(id);// 这里的id是int com.ray.ch08.Test.id
		}

		private void say() {
			say();// Class Test Method say
			System.out.println("Class Destination Method say");
		}

	}

	private class Content {
		private String a = name;

		private void run() {
			run();// Class Test Method run
		}
	}

}

上面的例子充分展现了内部类访问外部类的各种权限,从私有域到私有方法再到公有域和方法。


下面我们来展示一下内部类与迭代器模式之间的关系。

其实就是迭代器的实现。

package com.ray.ch08;

public class Sequence {
	private Object[] items;

	private int next = 0;

	public Sequence(int num) {
		items = new Object[num];
	}

	public void add(Object item) {
		for (int i = 0; i < items.length; i++) {
			items[i] = item;
		}
	}

	private class SequenceSelector implements Selector {
		private int i = 0;

		@Override
		public boolean end() {
			return items.length == i;
		}

		@Override
		public void next() {
			if (items.length > i) {
				i++;
			}
		}

		@Override
		public Object current() {
			return items[i];
		}
	}

	public Selector getSelector() {
		return new SequenceSelector();
	}

	public static void main(String[] args) {
		Sequence sequence = new Sequence(10);
		for (int i = 0; i < 10; i++) {
			sequence.add(i);
		}
		Selector selector = sequence.getSelector();
		while (!selector.end()) {
			System.out.println(selector.current());
			selector.next();
		}
	}

}

interface Selector {
	boolean end();

	void next();

	Object current();
}

总结:这一章节主要讲述了内部类链接到外部类,以及迭代器的实现。


这一章节就到这里,谢谢。

-----------------------------------

目录




版权声明:本文为博主原创文章,未经博主允许不得转载。

从头认识java-8.2 链接到外部类

原文:http://blog.csdn.net/raylee2007/article/details/49765415

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!