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

java中的内部类,分为 内部类,局部内部类,匿名内部类!

内部类: 顾名思义 定义在类的内部的类叫做 内部类!

局部内部类: 定义在局部函数中的 类,叫做 局部内部类!

匿名内部类:  没有名字的内部类! 玩 android  都知道,android  比较常见 匿名内部类!

内部类的优点:

1 内部类可以直接 访问 外部类的所有成员!

因为,当你调用外部类的时候,却生了 outer.this.成员变量或函数!

2 含有静态成员的内部类, 必须是静态的!

3 内部类一般用在设计中!

弊端:

1 内部类 不能直接创建,  需要在前面 添加 外部类!

2  外部类 访问 内部类

先创建内部类 对象, 在访问!

代码如下:

package stu.love.d;

class Outer
{
	int num = 6;
	//内部类
	class Inner
	{
		public void show()
		{
			System.out.println("Hello World!"+num);
		}
	}

	public void func()
	{
		Inner in = new Inner();
		in.show();
	}
}

public class Innerdemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Outer out = new Outer();
		out.func();
		//直接创建内部类对象
//		内部类的类型   外部类.内部类  

		Outer.Inner  in = new Outer().new Inner();

		Outer.Inner  in1 = out.new Inner();

	}

}

内部类定义为 静态的时候:

代码如下: 静态 直接用类名调用!

class Person
{
	class Heart
	{
	}
}
class Outer
{
	private  static int num = 6;
	static  class Inner
	{
		public static void show()//静态方法,其所在的内部类必须是静态的
		{
			System.out.println("Hello World!"+num);
		}
	}
	public void func()
	{
		Inner in = new Inner();
		in.show();
	}
}
class Demo16
{
	public static void main(String[] args)
	{

		//调用静态内部类中的非静态方法
		Outer.Inner in = new Outer.Inner();
		in.show();
		//调用静态内部类中的静态方法
		Outer.Inner.show();
	}
}

局部内部类:

实际意义 不是很大哦!

因为,她定义在 函数中,生命周期比较短。

注意的是: 她 所调用的变量 奥,因为 出栈后 可能 就消失了!

代码:

局部内部类:如果访问其所在函数的局部变量,该局部变量必须是final的
class Outer
{   int num = 3;
	Object obj;
	public void func(final int x)
	{   final int y = 6;
	    <span style="white-space:pre">	</span>//  局部内部类:
		class Inner //extends Object
		{
			public void show()
			{
				System.out.println(y);
			}
			public String toString()
			{
				return "inner"+y;
			}
		}
       <span style="white-space:pre">		</span>// 用的话 在 函数内使用!
		obj = new Inner();
	}
	public void  function()
	{
		obj.toString();
	}
}
class Demo18
{
	public static void main(String[] args)
	{
		Outer out = new Outer();
		out.func(4);
		out.function();
	}
}

内存解析图:

时间: 2024-10-30 10:29:38

Java 之 -------------- 内部类 详解的相关文章

JAVA基础——内部类详解

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

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

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

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

[转] Java内部类详解

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

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

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

Java内部类详解 2

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

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

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

内部类详解(很详细)

内部类详解(很详细) (转)内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1.私有内部类 -- 在方法之间定义的内部类,非静态 我们首先看看类中内部类的两个特点: (1) 在外部类的作用范围内可以任意创建内部类对象,即使内部类是私有的(私有内部类).即内部类对包围它的外部类可见. //代码1:内部类对外部类可见 class Outer{ //创建私有内部类对象 public Inner in=new Inner();

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

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