1.嵌套类,内部类

 嵌套类是指被定义在一个类内部的类; 

JAVA的嵌套类有很多种类:1.静态成员类;2.非静态成员类;3.匿名类;4.局部类;其中,除了静态成员类之外,其他的都是内部类,因为静态成员类更像是一个独立的类;

但是静态成员类,是外部类内部的一个成员,静态成员类的访问和其他的静态成员一样:1.通过外部类类名调用;2.如果静态成员类定义为私有,那么只能在外部类内部使用

       JAVA 内部类可以很好的实现隐藏,并且内部类拥有外围类的所有元素的访问权限,可是实现多重继承,并且可以避免修改接口而实现同一个类中两种同名方法的调用。

内部类有以下特点

1.内部类中如果有static的属性,或者方法,那么这个内部类必须是static class;

2.一个内部类static内部类,可以有非static的方法和属性;

2.外部类和内部类

  2.1.外部类访问内部类的属性或方法

可以通过new 对象,外部类可以调用内部类的所有域的属性和方法

public class Outer {
private String name = "张三";
public int age = 10;
private void outerMethod(){
Inner inner = new Inner();
int age = inner.innerAge;
String name = inner.innerName;
inner.innerMethod();
System.out.println("outer method");
} class Inner{
private String innerName = "Inner";
public int innerAge = 14;
public void innerMethod(){
System.out.println("inner start");
System.out.println("inner end");
}
}

  2.2.内部类访问外部类的方法和属性

可以通过 外部类.this.内部类方法(属性)的方式调用所有域的属性和方法

public class Outer {
private String name = "张三";
public int age = 10;
private void outerMethod(){
System.out.println("outer method");
} class Inner{
public void innerMethod(){
System.out.println("inner start");
Outer.this.outerMethod();
String name = Outer.this.name;
int age = Outer.this.age ;
System.out.println("inner end");
}
}
}

  2.3 内部类调用内部类

和外部类调用内部类一样,用 new 对象的形式,可以访问另一个内部类的所有域属性和方法;

3.如何调用用一个类的内部类

一般通过两种方式:第一种:new outer().new inner();第二种:new outer().getInner();通过方法获取;

public class Outer {
public Inner getInner(){
return new Inner();
};
class Inner{
private String innerName = "Inner";
public int innerAge = 14;
}
}
class Test{
public static void main(String[] args) {
Outer.Inner inner = new Outer().new Inner();
Outer.Inner inner1 = new Outer().getInner();
}
}

参考资料:《effective java》

最新文章

  1. laravel 操作 redis
  2. Spring系列之AOP实现的两种方式
  3. MVC 上传 下载
  4. 部署额外域控制器,Active Directory
  5. 翻译:AKKA笔记 - Actor消息 -1(二)
  6. C#的一维数组和二维数组定义方式:
  7. iOS Runtime原理及使用
  8. Python之Flask Web开发
  9. rsync 无密码传输文件
  10. delphi获得当前鼠标坐标
  11. Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
  12. Visual studio 2015程序转Eclipse gun编译出现的问题总结
  13. 15一个NoSql数据库
  14. java 线程方法join的简单总结
  15. 去掉chrome浏览器中input获得焦点时的带颜色边框呢
  16. 2.Cocos2d-x-3.2编写3d打飞机,项目代码总结
  17. node.js代理设置
  18. 目标指定法——S.M.A.R.T.
  19. final可以修饰类、属性、方法。
  20. [USACO08DEC]Secret Message

热门文章

  1. java实现第四届蓝桥杯买不到的数目
  2. PAT 月饼
  3. HttpClientFactory-向外请求的最佳
  4. kvm的命令简单使用
  5. Tomcat/ WebSphere/WebLogic的作用和特点
  6. php5.5下安装pdflib的步骤
  7. 不适合使用Mycat的场景
  8. vsftpd服务器配置与使用
  9. yii2.0AR两表联查
  10. 3.kubernetes的CNI网络插件-Flannel