`
TRAMP_ZZY
  • 浏览: 133565 次
社区版块
存档分类
最新评论

Java 内部类

    博客分类:
  • Java
阅读更多

当生成一个内部类的对象时,此对象与制造它的外围对象就有了一种联系。所以其能访问
其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的
访问权。

在拥有外部类对象之前是不可能创建内部类对象的。这是因为内部类对象会暗暗地连接到它的外部类对象上。
但是,如果你创建时嵌套类(静态内部类),那么它就不需要对外部对象的引用。

public class DotThis {

	void f() {
		System.out.println("DotThis.f()");
	}
	
	public class Inner {
		public DotThis outer() {
			return DotThis.this;
		}
		
		public void say() {
			System.out.println("inner class");
		}
	}
	
	public Inner inner() {
		return new Inner();
	}
	
	public static void main(String[] args) {
		DotThis dotThis = new DotThis();
		DotThis.Inner inner = dotThis.inner();
		inner.outer().f();
		
		// 创建内部类对象
		DotThis.Inner dni = dotThis.new Inner();
		dni.say();
	}
}

public class Sequence {

	private Object[] items;
	private int next = 0;
	
	public Sequence(int size) {
		items = new Object[size];
	}
	
	public void add(Object x) {
		if (next < items.length) {
			items[next++] = x;
		}
	}
	
	private class SequenceSelector implements Selector {
		private int i = 0;
		@Override
		public boolean end() {
			return i == items.length;
		}

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

		@Override
		public void next() {
			if (i < items.length) {
				i++;
			}
		}
		
	}
	
	public Selector selector() {
		return new SequenceSelector();
	}
	
	public static void main(String[] args) {
		Sequence sequence = new Sequence(10);
		for (int i=0; i<10; i++) {
			sequence.add(Integer.toString(i));
		}
		Selector selector  = sequence.selector();
		while (!selector.end()) {
			System.out.println(selector.current() + " ");
			selector.next();
		}
	}
	
}

public class Parcel4 {

	private class PContents implements Contents {
		private int i = 11;
		@Override
		public int value() {
			return i;
		}
	}
	protected class PDestination implements Destination {
		private String label;
		private PDestination(String whereTo) {
			this.label = whereTo;
		}
		@Override
		public String readLabel() {
			return label;
		}
	}
	
	public Destination destination(String s) {
		return new PDestination(s);
	}
	
	public Contents contents() {
		return new PContents();
	}
}

匿名内部类
public class Prac17 {

	public Contents contents() {
		return new Contents() {
			private int i = 11;
			@Override
			public int value() {
				return i;
			}
		};
	}
	public static void main(String[] args) {
		Prac17 prac17 = new Prac17();
		Contents c = prac17.contents();
	}
}
分享到:
评论

相关推荐

    浅谈Java内部类的四个应用场景

    Java内部类是Java言语的一个很重要的概念,《Java编程思想》花了很大的篇幅来讲述这个概念。但是我们在实践中很少用到它,虽然我们在很多时候会被动的使用到它,但它仍然像一个幕后英雄一样,不为我们所知,不为我们...

    java内部类详解

    java内部类详解

    Java内部类总结

    Java内部类总结 学习java的资源

    Java内部类应用详解

    从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论。其实任何优秀的语言特性用得不好就是滥用,内部类用得不好就会导致代码像迷宫一样,导致出现毫无重用的综合征。...本文档讲述Java内部类的规则及应用

    12.java内部类.zip

    12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类...

    java内部类的讲解

    这里是自己对java内部类整理的一篇文章,有可执行的源代码

    java内部类使用例子

    java内部类使用例子,可以运行

    Java内部类的四个应用场景

    谈Java内部类的四个应用场景

    java 内部类应用

    java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用

    Java内部类(DOC)

    Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类

    java 内部类 局部内部类 匿名类 实例代码

    java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码

    JAVA 内部类 PPT

    详细介绍JAVA内部类的用法,用途,基本语法,及匿名类用法

    Java内部类的作用

    Java内部类的作用

    JAVA内部类总结

    JAVA内部类的一些总结

    JAVA内部类.doc

    对内部类不错的讲解,以及如何应用并且还帮你归了类,不错的选择

    java内部类

    高效的课件,详细的内容介绍,针对性的代码展示,提高性的练习题目。适合新手或者基础薄弱人员学习,一个PPT解决你编程中常见的错误,最重要的是一人下载多人使用,不受限制,没有隐藏密码

    Java 干货之深入理解Java内部类(学习资料)

    Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;

    java基础java内部类

    java基础java内部类

Global site tag (gtag.js) - Google Analytics