内部类
2016-03-10 17:33
211 查看
内部类
什么叫内部类呢?其实顾名思义,就是位于一个类内部的类,除了位置是在一个类的内部,其余的类里面的东西,和外部的一般类没有任何区别。但是,我们可以从以下几个方面来讨论。
首先是访问规则。
eg:class Outer
{
private int x=3;
class Inner
{
public void show()
{
System.out.println("Inner:"+x);
}
}
public void search()
{
Inner in=new Inner();
in.show();
}
}
public class Demo
{
public static void main(String []args)
{
Outer ou=new Outer();
ou.search();
}
}
这段程序的结果是Inner:3
从这个程序可以看出,内部类可以访问它所在的外部类的成员变量,甚至是私有的变量:当外部类的函数想访问内部类的函数时,需要先建立内部类的对象,再访问那个方法
其次,再从访问的格式来讨论:
1:当内部类定义在外部类的成员位置上时且无任何修饰的关键词时,可以:在外部其他类中直接建立内部类对象
格式:外部类名.内部类名 变量名=外部类对象.内部类对象
eg:Outer.Inner in=new Outer().new Inner();
2:当内部类在成员位置上且被修饰时,比如private,static等。它的访问方式就会不一样。
当被static:内部类就具备static的特性,比如可以直接被类名.调用
eg:Outer.Inner.show();
但是当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限:当内部类中定义了静态成员,该内部类必须是静态的;当外部类中的静态方法访问内部类时,内部类也必须是静态的:当内部类是静态时,不可以访问非静态的成员
3:局部内部类不能被private static等关键字修饰,其次,内部类定义在局部时,如果想访问里面的方法,必须在类建立后建立这个内部类的对象,里面的方法才能被访问:可以直接访问外部内中的成员,但是不可以访问它所在的局部中的成员,只能访问被final修饰的成员
再者,就是我们在什么时候定义内部类呢?就拿我们人来说,我们内部的器官和我们的身体,如果我们先定义了一个人体,再想描述器官的时候,就需要把器官的类定义在人体的类的里面,这样比较符合我们队事物的认知。因为内脏本来就是存在于人体内部的。
相关文章推荐
- 终于,android 2.3.7 跑起来了
- APP微信支付
- ssl 协议
- 大飞哥我来了!
- C# 知识点记录(持续更新中)
- Android Studio 配置JPush
- iOS property两种实现方法区别的简单介绍
- 微信网页授权用户信息——openId相关
- //写一个生成10个100以内随机数数据,再进行冒泡排序,顺序,//二分查找法找到一个值得位置,如果没有则为-1,有则返回数组位置
- Python爬取中文页面的时候出现的乱码问题(续)
- Laravel监听数据库访问、打印SQL
- Symbol xxx could not be resolved
- Handler发送sendMessage和postRunnable的区别
- Mysql binlog 日志的三种模式
- note
- CentOS6.0下安装JDK7
- Quartz教程二:API,Job和Trigger
- 序列化对单例的破坏
- 学做酷炫有爱的免费网页,学习 Github Page 教你分分钟搭建自己的博客
- 根据老赵轻量级Actor进行修改的Actor模型