博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内部类
阅读量:5902 次
发布时间:2019-06-19

本文共 1672 字,大约阅读时间需要 5 分钟。

        在分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述的事物,这个还有的事物就可以定义为内部类来描述。

1、内部类的特点

①内部类可以直接访问外部类中的成员,因为内部类持有了外部类的引用,外部类名.this

②外部类如果要访问内部类的成员,必须要建立内部类的成员。

③如果内部类中定义了静态成员,则该内部类是静态的。

④如果内部类是静态的,该内部类相当于一个外部类。因为静态成员可以直接用类名调用,不需要创建对象。

class Outer{	private static int num = 31;	class Inner// 内部类。	{		void show()		{			System.out.println("show run..."+num);		}		/*static void function()//如果内部类中定义了静态成员,该内部类也必须是静态的。		{			System.out.println("function run ...."+num);		}		*/	}	public void method()	{		Inner in = new Inner();		in.show();	}}public class InnerClass1 {	public static void main(String[] args) 	{//		Outer out = new Outer();//		out.method();		//直接访问外部类中的内部类中的成员。		Outer.Inner in = new Outer().new Inner();		in.show();		//如果内部类是静态的。 相当于一个外部类//		Outer.Inner in = new Outer.Inner();//		in.show();//		如果内部类是静态的,成员是静态的。//		Outer.Inner.function();			}}
2、内部类可以放在局部位置上,当内部类放在局部位置上时,只能访问局部中被final修饰的局部变量

3、匿名内部类

        匿名内部类就是内部类的简写格式,使用前提:内部类必须继承或实现一个外部类或者接口。匿名内部类其实就是一个匿名的子类对象。格式:new  父类或者接口()  {子类内容}

abstract class Demo{	abstract void show();}class Outer {	int num = 3;	void method(){		new Demo(){			void show(){				System.out.println("show ........"+num);			}		}.show();	}}class  InnerClass3{	public static void main(String[] args) 	{		new Outer().method();	}}
匿名内部类中方法有多个时如何调用?

interface Inter{	void show1();	void show2();}class Outer{	public void method()	{			Inter in = new Inter()		{			public void show1()			{				System.out.println("show1 run ...");			}			public void show2()			{				System.out.println("show2 run ...");			}					};		in.show1();		in.show2();	}}class InnerClass4 {	public static void main(String[] args) 	{		new Outer().method();	}}

转载于:https://www.cnblogs.com/myeden/p/6218286.html

你可能感兴趣的文章
谈谈-TabPagerIndicator
查看>>
DrawerLayout和ActionBarDrawerToggle
查看>>
Unity3D--学习太空射击游戏制作(四)
查看>>
"无法从静态上下文中引用非静态变量,非静态方法"
查看>>
Mybatis中的模糊查询
查看>>
sscanf()分割字符数组
查看>>
Hibernate中使用Criteria查询及注解——( EmpCondition)
查看>>
SQL Server 关系表的创建、索引创建和数据插入
查看>>
美图技术博客之地理空间距离计算优化
查看>>
[转载]jquery的extend和fn.extend 区别
查看>>
git的patch 管理
查看>>
Mybatis的ResultMap的使用(转)
查看>>
Ad Hoc
查看>>
Serializable Clonable
查看>>
《mysql数据库备份小脚本》(转)
查看>>
10秒钟完成MySQL数据库结构对比
查看>>
VDI序曲一 服务器虚拟化
查看>>
Forrester:2011年Q2数据库审计与实时保护市场分析报告
查看>>
美国国防部的LPS便携安全系统
查看>>
工作与生活平衡 -- 别跟自己较劲
查看>>