java(24) - 内部类详解

一.内部类:

       1).内部类的定义:通俗的讲就是在一个类的里面再定义一个类。

2).内部类可以public,private,protected等修饰,也可以是静态static。

二.四种内部类的实现:

1).静态内部类:

例子:

class InnerClass {

	public static int count = 10;
	//静态内部类
	public static class Inner{

		public void print(){

			System.out.println(count);

		}
	}
}
public class StaticInnerClass {

	public static void main(String[] args) {

		InnerClass.Inner  inner = new InnerClass.Inner();
		inner.print();
	}
}

结果:10

静态内部类只能访问外部类的静态成员变量与静态方法。因为内部类被静态化,所以可以直接new出内部类的对象。

2).成员内部类:

例子:

class MemberClass{
	public int count = 10;
	public static int number = 1;
	//成员内部类
	public class Inner{

		public void print(){

                   System.out.println(count+"   "+number);

		}
	}
}
public class MemberClassTest {

	public static void main(String[] args) {
		//通过外部类的对象,new出内部类对象。
		MemberClass.Inner mem = (new MemberClass()).new Inner(); 

		mem.print();

	}
}

结果: 10   1  成员内部类作为外部类的成员,可以直接使用外部类的所有成员和方法,内部类对象的创建要先创建外部类的对象才能创建内部类对象:OuterClass.InnerClass inner = (new OuterClass()).new innerClass();  如果想在成员内部类使用外部类的成员变量则需要:OuterClass.this.变量名。

3).局部内部类 :

例子:

class LocalInnerClass{
	public void test(){
		class Inner{
			public void print(){
				System.out.println("HAHA");
			}
		}
		new Inner().print();
	}
}
public class LocalInnerClassTest {
	public static void main(String[] args) {
		LocalInnerClass  inn = new LocalInnerClass();
		inn.test();
	}
}

结果:HAHA

局部内部类是指定在方法或作用域中的。只能在该方法或作用域中使用,退出这些作用域之后则无法使用。

局部内部类只能访问方法中用final类型的变量。

4).匿名内部类:

例子:

class AnonymousClass{

	@SuppressWarnings("deprecation")
	public void print(Date  data){

        System.out.println(data.toLocaleString());

	}

}
public class AnonymousClassTest {

	public static void main(String[] args) {

		AnonymousClass an = new AnonymousClass();

		an.print(new Date());

		an.print(new Date()
		{
			@Override
			@Deprecated
			public String toLocaleString() {
				// TODO Auto-generated method stub
				return "HAHA";
			}

		});

	}
}

结果:

2015-3-17 21:28:11

HAHA

匿名内部类隐式的继承一个父类或一个接口。匿名内部类是不能加访问修饰符的。这种内部类用在事件上比较多。

     







时间: 2024-12-14 08:38:01

java(24) - 内部类详解的相关文章

JAVA基础——内部类详解

JAVA内部类详解 在我的另一篇java三大特性的封装中讲到java内部类的简单概要,这里将详细深入了解java内部类的使用和应用. 我们知道内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类 这里我们先将以这个分类来详细了解各个内部类的情况.然后给内部类作出总结. 一.成员内部类 内部类中最常见的就是成员内部类,也称为普通内部类.我们来看如下代码: 运行结果为: 从上面的代码中我们可以看到,成员内部类的使用方法: 1. Inner 类定义在 Outer 类的内部,相当于 O

Java 之 -------------- 内部类 详解

java中的内部类,分为 内部类,局部内部类,匿名内部类! 内部类: 顾名思义 定义在类的内部的类叫做 内部类! 局部内部类: 定义在局部函数中的 类,叫做 局部内部类! 匿名内部类:  没有名字的内部类! 玩 android  都知道,android  比较常见 匿名内部类! 内部类的优点: 1 内部类可以直接 访问 外部类的所有成员! 因为,当你调用外部类的时候,却生了 outer.this.成员变量或函数! 2 含有静态成员的内部类, 必须是静态的! 3 内部类一般用在设计中! 弊端: 1

Java中内部类详解—匿名内部类

什么是内部类? 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类.   成员内部类 定义在类中方法外的类. 定义格式: class 外部类 { class 内部类{ } } 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构.比如,汽车类Car 中包含发动机类Engine ,这时,Engine就可以使用内部类来描述,定义在成员位置. 代码举例: class Car { //外部类 class Engine { //内部类 } } 访问特点 成员内部类可

[转] Java内部类详解

作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.

Java内部类详解 2

Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811

Java内部类详解(一)(转自:http://blog.csdn.net/wangpeng047/article/details/12344593)

很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听过也没有使用过,内部类在Java中其实是比较重要的一块内容,掌握好这门知识对于编程来说,犹如插上一对翅膀. 一.概念 内部类是指在一个外部类的内部再定义一个类,类名不需要和文件名相同. 对于一个名为outer的外部类和其内部定义的名为inner的内部类.编译完成后会生成outer.class和outer$inner.class两个类.所以内部类的成员变量.方法名可以和外部类的相同. 内部类可以是静态static和非静态的,

“全栈2019”Java第九十六章:抽象局部内部类详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十六章:抽象局部内部类详解 下一章 "全栈2019"Java第九十七章:在方法中访问局部内部类成员详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

面向对象编程(十六)——内部类详解

一.内部类(innerclasses) 一般情况,我们把类定义成独立的单元.有些情况下,我们把一个类放在另一个类的内部定义,称为内部类. 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类. 1. 内部类的作用 内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问. 内部类可以直接访问外部类的私用属性.内部类被当成其外部类的成员.但是外部类不能访问内部类的

另外几种Java集合框架详解续

另外几种Java集合框架详解续 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs fastutil库优于Trove库的地方:Trove库已经三年未更新了,属于非活跃的开源项目:而fastutil一直在更新.fastutil有更丰富的特性,支持超大的集合(大于2^32,即4GB的集合),文档也更丰富. fastutil是一个开源的Java集合框架的扩展,它继承了Java Collection Framework,提供了数