JAVA的内部类

原创 2015年07月10日 00:04:39
什么是内部类?
内部类就是定义在另一个类里面的类。与之对应,包含内部类的类被称为外部类
//外部类HelloWorld
<span style="font-size:14px;">public class HelloWorld{
	//内部类Inner
	public class Inner{
		public void show(){
			System.out.println("这是内部类Inner里面的show()方法");
		}
	}
	public static void main(String[] args){
		//创建外部类对象
		HelloWorld hello = new HelloWorld();
		//创建内部类对象
		Inner inner = hello.new Inner();
		
	}
}</span>


内部类的主要作用:
1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3.内部类所实现的功能使用外部类同样可以实现,只是有时候使用内部类更方便


内部类有几种?
1.成员内部类
2.静态内部类
3.方法内部类
4.匿名内部类


一、成员内部类
成员内部类是最常见的内部类,也称为普通内部类
成员内部类的使用方法:
1.内部类可以使用任意的访问修饰符:如public、protected、private等
2.内部类可以直接访问外部类中的数据而不受访问修饰符的影响
3.如果内部类和外部类有相同的变量,在内部类中默认调用的变量是内部类的变量,如果想调用外部类的变量,用this关键字指代
4.内部类创建对象:内部类 对象 = 外部类对象.new 内部类();
5.外部类和内部类经过javac命令编译后,会产生两个.class文件:外部类.class 和 外部类$内部类.class
6.内部类可以直接使用外部类的变量和方法,但是外部类不可以直接访问内部类的成员和方法


二、静态内部类
1.静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问
2.如果外部类与内部类有相同的静态成员,对外部类的访问:外部类.静态变量 和 内部类.静态变量
3.创建内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类();
<span style="font-size:14px;">//外部类
public class Outer {
	public int a = 99;//
	static int b = 2;
	//静态内部类
	public static class Inner{
		int b =2;
		public void test(){
			System.out.println("外部类a"+new Outer().a);
			System.out.println("外部类b"+Outer.b);
			System.out.println("内部类b"+new Inner().b);
		}
	}
	public static void main(String[] args) {
		//静态内部类可以直接实例化对象
		Inner in = new Inner();
		in.test();
	}
}</span>


三、方法内部类
1.方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用
2.方法内部类不能在外部类的方法以外的地方使用
3.方法内部类不能使用访问控制符和static修饰符
<span style="font-size:14px;">//外部类
public class Outer{
	//外部类中的方法
	public void show(){
		final int a=15;//常量
		int b=13;//变量
		//内部类
		class Inner{
			int c=2;//内部类中的变量
			public void print(){
				System.out.println("访问外部类中的方法中的常量a"+a);
				System.out.println("访问内部类中的变量c"+c);
			}
		}
		Inner in = new Inner();//创建方法内部类的对象
		in.print();//调用内部类的方法
	}
	//测试方法内部类
	public static void main(String[] args) {
		Outer ou = new Outer();
		ou.show();
	}
}</span>


版权声明:此博客内容均是本人精心整理文档,方便大家学习交流,如有不妥之处,请联系我删除

Java内部类总结 (吐血之作)

内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。 内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访...
  • a564663276
  • a564663276
  • 2013年05月23日 11:29
  • 48163

JAVA和C++内部类

JAVA和C++内部类的异同
  • qq78442761
  • qq78442761
  • 2016年11月21日 22:52
  • 448

Java 内部类与外部类的关系

内部类分为:非静态内部类、静态类内部类、匿名内部类和局部内部类。            内部类可以直接访问外部类的私有属性,这是由于这个原因。        1、非静态内部类对象会持有外部类的对象。其...
  • lmj121212
  • lmj121212
  • 2016年11月23日 21:39
  • 788

java内部类有什么好处?为什么需要内部类?

提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就...
  • a564663276
  • a564663276
  • 2013年05月23日 10:27
  • 6852

java中的外部类和内部类

1.概念  内部类:顾名思义
  • wuzhoudao
  • wuzhoudao
  • 2014年06月17日 19:09
  • 977

java静态内部类

转载:http://www.cnblogs.com/Alex--Yang/p/3386863.html    http://book.51cto.com/art/201202/317517.htm ...
  • a465456465
  • a465456465
  • 2015年07月01日 11:25
  • 758

Java 四种内部类

Java 内部类  分四种:成员内部类、局部内部类、静态内部类和匿名内部类。  1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。 注意:成员内部类中不能定义静态变量,但可以访问...
  • superit401
  • superit401
  • 2016年07月30日 18:01
  • 2451

java中的内部类的用法

今天实训课上讲了内部类,发现还有很多生疏的地方,老师说内部类也是面试的要点,所以有必要总结下java中内部类的用法; 一.内部类的定义作用及分类 定义:内部类就是定义在另外一个类中的类,与之对应包...
  • u010785140
  • u010785140
  • 2015年07月20日 14:44
  • 1786

Java内部类的实现原理与可能的内存泄漏

在使用java内部类的时候要注意可能引起的内存泄漏 代码如下package com.example;public class MyClass { public static void mai...
  • qq_22706515
  • qq_22706515
  • 2016年05月05日 11:57
  • 2578

Java—内部类(三)—内部类的继承

内部类的继承内部类和其他普通类一样,同样可以被继承,这样给本来就十分灵活的内部类增加了更好的结构性和代码复用性。只是内部类的继承和普通类有一些不同之处,是在使用时需要多加注意的。因为内部类在创建时需要...
  • yuwenhao07
  • yuwenhao07
  • 2016年12月14日 14:23
  • 1668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA的内部类
举报原因:
原因补充:

(最多只允许输入30个字)