`

“Java内部类”总结

    博客分类:
  • java
阅读更多
内部类:
将相关的类组织在一起,降低了命名空间的混乱,它是定义在小于一个包的范围内。
内部类可以定义在另外一个类里面,可以定义在一个方法里面,甚至可以作为一个表达式的一部分。

Java里面共有四种内部类:

1、静态内部类(static inner class): 只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass.InnerClass();
它是定义在一个类的里面,而且这个类是由一个static关键字修饰的。

2、成员内部类(member inner class): 可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass().new InnerClass();
它是定义在一个类的里面,但是没有static关键字修饰。
在一个外部类当中创建一个内部类的实例(例如在外部类里面定义的一个方法里面创建成员内部类的实例):this.new Innerclass();
在一个外部类的外面创建一个内部类的实例(例如在不是外部类的另一个类里面创建成员内部类的实例):(new Outerclass()).new Innerclass();
若想在局部成员内部类中访问外部类的成员变量,语法为:OuterClass.this.a;

3、局部内部类(Local inner class): 定义在方法当中,只能访问方法中声明的final类型的变量。像一个局部变量一样,不能被声明为一个public、protected、private、static的。【用的很少】

4、匿名内部类(Anonymous Inner Class):匿名内部类会隐式地继承一个父类或实现一
个接口
。它是一个没有名字的局部内部类,也没有关键字class,也没有关键字extends和implements,也没有构造方法。【用的比较多】



下面是各种内部类相关的一些实例:

package com.shengshiyuan.innerclass;

class StaticInner {
	private static int a = 4;

	/**
	 * 静态内部类,必须有static关键字修饰(static关键字不能修饰外部类,它也不可能去修饰外部类。static要想修饰类,只能修饰静态内部类)
	 * 类: Inner <br>
	 * 描述: TODO <br>
	 * 作者: 
	 * 时间: Nov 6, 2013 7:38:41 PM
	 */
	public static class Inner {
		public void test() {
			System.out.println(a);
		}
	}
}

public class StaticInnerclassTest {
	public static void main(String[] args) {
		// 生成内部类的对象只能从外部类一层层深入去引用它去生成对象,不能直接写内部类
		StaticInner.Inner inner = new StaticInner.Inner();
		inner.test();
	}
}


package com.shengshiyuan.innerclass;

class MemberInner {
	private int a = 4;

	/**
	 * 成员内部类
	 * 类: Inner2 <br>
	 * 描述: TODO <br>
	 * 作者: 
	 * 时间: Nov 6, 2013 7:57:02 PM
	 */
	public class Inner2 {
		private int a = 5;

		public void doSomething() {
			// 就近原则,访问类内部的变量
			System.out.println(a);
			// 这种情况下访问外部类的成员变量的方式
			System.out.println(MemberInner.this.a);
		}
	}

	public void method() {
		// 在这里创建成员内部类实例的方式
		Inner2 inner2 = this.new Inner2();
	}
}

public class MemberInnerclassTest {
	public static void main(String[] args) {
		// 注意成员内部类生成对象的方式
		MemberInner.Inner2 inner2 = new MemberInner().new Inner2();
		inner2.doSomething();
	}
}


package com.shengshiyuan.innerclass;

import java.util.Date;

public class AnonymousInnerclassTest {

	@SuppressWarnings("deprecation")
	public String get(Date date) {
		return date.toLocaleString();
	}

	public static void main(String[] args) {
		AnonymousInnerclassTest test = new AnonymousInnerclassTest();
		// String str = test.get(new Date());
		// System.out.println(str);
		/**
		 * 匿名内部类
		 * 1、这里表示我自己定义了一个匿名的内部类
		 * 2、我自己定义的这个匿名的内部类它继承了Date这个类
		 * 3、它继承完之后重写了Date类里面的toLocalString()方法
		 * 4、注意:这里调用get方法的时候传递的不是一个Date类型的实例,而是传递的是这里定义的这个内部类(Date类的一个子类)的一个实例
		 */
		String str = test.get(new Date() {
			public String toLocaleString() {
				return "hello world";
			}
		});
		System.out.println(str);
	}
}
分享到:
评论

相关推荐

    Java内部类总结

    ### Java内部类总结 在Java编程语言中,内部类是一个重要的概念,它允许开发者在一个类的内部定义另一个类。这种特性极大地增强了代码的封装性和复用性,同时也为解决特定问题提供了灵活的方法。本文将围绕Java内部...

    JAVA内部类总结

    ### JAVA内部类总结 在Java编程语言中,内部类(Inner Classes)是一种非常重要的特性,它允许我们在一个类的内部定义另一个类。这种结构不仅能够提高代码的组织性,还能帮助我们更好地处理类与类之间的关系。根据...

    java内部类总结(含概念和实例)

    Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而外部类只能使用 public 和缺省的包...

    Java内部类总结,内部类的共同特征,内部类的分类等

    Java 内部类总结 Java 内部类是 Java 语言的一个重要概念,指的是在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而...

    Java内部类总结[参考].pdf

    Java内部类总结 Java内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限...

    Java内部类总结.pdf

    总结一下,Java内部类是一种强大的工具,它增强了类的封装性和灵活性。通过内部类,开发者可以更好地组织代码,实现更复杂的逻辑,同时保持良好的代码结构。成员内部类提供了对外部类状态的访问,局部内部类提供局部...

    java内部类总结.pdf

    Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计使得代码结构更加紧凑,同时也提供了对封装和抽象的新层次。内部类在J2EE编程中可能用得较少,但在GUI编程中尤其常见,主要用于...

    java语言内部类总结

    定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现...

    Java语法总结 - 内部类

    Java内部类详解 Java内部类是Java语言中的一种特殊类别,它是指定义在另外一个类内部的类。内部类可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法...

    java中的匿名内部类总结

    Java 中的匿名内部类总结 Java 中的匿名内部类是一种特殊的内部类,它没有名字,因此也称为匿名类。匿名内部类是一种简洁的编程方式,能够简化代码编写,但它也有一些限制和特点。 匿名内部类的定义 匿名内部类是...

    java内部类使用总结

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类提供了增强封装的能力,使得内部类可以被隐藏在外部类中,仅对外部类可见,从而增加了代码的隐私性和安全性。同时,内部...

    java中的内部类总结

    Java 中的内部类是面向对象编程的一个重要特性,它允许在一个类的定义内部定义另一个类。内部类的主要优点是能够方便地访问外部类的私有成员,提供了更封装的代码组织方式,以及创建特定上下文的类实例。下面将详细...

    java 内部类应用

    总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免过度依赖内部类导致代码难以理解和维护。在实际项目中,应根据具体需求选择合适的设计模式。

    Java 内部类

    总结来说,Java 内部类提供了一种强大的工具,可以增强代码的封装性和灵活性。成员内部类方便访问外部类的私有成员,方法内部类常用于匿名内部类的创建,而静态内部类则允许我们不依赖外部类实例来创建对象。理解并...

    Java中的内部类总结.doc

    Java中的内部类是一种强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以作为外部类的一个成员,提供了一种灵活的代码组织方式,并且能够访问外部类的私有成员,这使得内部类在处理封装和继承时具有独特...

Global site tag (gtag.js) - Google Analytics