java 嵌套类: Nested classes

  • 嵌套类分类
    • 静态嵌套类
    • 非静态嵌套类
      • 普通内部类: Common classes
      • 局部内部类: Local classes
      • 匿名内部类: Anonymous classes

嵌套类
一个类定义在别的类的内部。

嵌套类分类

静态嵌套类

  • 层级和包围类的成员变量一致。
public class Outer1{String name;// 静态嵌套类static class Inner1{String name;}
}
  • 第三方通过外部包围类访问静态嵌套类。
Outer1.Inner1 obj = new Outer1.Inner1();
//不需要new一个外围类的对象。

-外界通过类名访问静态嵌套类的静态成员变量,通过对象访问其非静态成员变量。

非静态嵌套类

普通内部类: Common classes

  • 定义在某个类的成员变量位置。
  • 定义后,在类里面均可以使用。
public class Outer3{public class Bird extends Animal implements Flyable{//该方法在Animal中有定义public void fly(){System.out.println("I can fly!");}//该方法在Flyable中有定义,这里实现。public void eat(){System.out.println("I can fly too!");}}public Bird obj = new Bird();public void function1(){obj.fly();}
}
//d第三方类使用该外包围类和普通内部类。
public class Outer3Test{public static void main(String[] args){Outer3 foo = new Outer3();foo.function1();Outer3.Bird bird = foo.new Bird();bird.fly();}
}

局部内部类: Local classes

  • 定义在某一代码块如某一方法中。
  • 如同局部变量一样,作用范围只在该代码块中。
//局部内部类
public void function1(){String name = "Peter";class Inner1{public void function2(){System.out.println(name);//就近原则,为PeterSystem.out.println(Outer2.this.name);//为外部包围类中的name。}}Inner1 obj1 = new Inner1();obj1.function2();
}
  • 可以继承其他类或接口。
  • 非静态类,不能包含静态成员。
  • 可以访问外围类中的成员。
  • 局部类不可以是一个接口。

匿名内部类: Anonymous classes

  • 无类名称,必须继承一个父类或者父接口。
  • 在实例化后,迅速转化为父类或父接口。
  • 只能new一个对象,并使用该对象进行操作。
  • 可以再普通语句和成员变量赋值时使用。
Runnable r = new Runnable(){public void run(){System.out.println("hello!");}
};
new Thread(r).start();
  • 内部不可以定义静态成员(变量+方法)。常量可以:
final static  int a = 5;//常量。
  • 因为无类名,外部包围类和其他类无法访问。

java 嵌套类: Nested classes相关推荐

  1. Java嵌套类(Nested Classes)总结

    Nested Classes定义 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration o ...

  2. java嵌套类与内部类

    一.嵌套类(Nested Classes) 使用嵌套类减少了命名冲突,一个内部类可以定义在一个类中,一个方法中甚至一个表达式中. (1)定义 A nested(嵌套) class is any cla ...

  3. Java 嵌套类和内部类演示样例lt;二gt;

    嵌套类(nested class)是一个在还有一个类或接口内部声明的类. 嵌套类分为两种:静态内部类(static inner class)和非静态嵌套类(non-static nested clas ...

  4. java 嵌套类 继承_Java嵌套类 - 爱吃苹果的搬运工的个人空间 - OSCHINA - 中文开源技术交流社区...

    在Java中可以创建几种不同类型的嵌套类: 静态嵌套类: 静态内部类可以独立于外部类被实例化,无法访问外部类中的非静态属性和方法,只能外部类的实例来访问外部类的非静态变量 public class O ...

  5. java 嵌套类 作用_java 嵌套类的分类、为什么使用嵌套类?

    java程序语言允许你在一个类里面再声明另一个类,这样的类成为嵌套类,说明如下:class OuterClass { ... class NestedClass { ... } } 术语:嵌套类分为两 ...

  6. java 嵌套类implement_有关 C++ 嵌套类

    嵌套类的访问问题: 记得白凤煮的C++中有一句这样的话:C++嵌套类只是语法上的嵌套.然而在实践过程中,却并非如此. Ex: classA { public: staticinta; classA1 ...

  7. Java嵌套类的使用

    嵌套类是指被定义在另一个类内部的类,它为外部类提供服务.嵌套类分四种:静态成员类.非静态成员类.匿名类和局部类. 一.静态成员类与非静态成员类的区别?在什么情况下可以用静态成员类? 我们知道在类的设计 ...

  8. java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象

    所以我有这个"工作"的代码(为简单起见替换一些名称): Map>> someMap = someListOfClassA.stream() .filter(...) . ...

  9. java嵌套类中的方法怎么调用_java类与嵌套嵌套后,怎么使用最外层的类建立对象后使用内部类的方法?...

    展开全部 /* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; im ...

最新文章

  1. potainer 日志_实时Web日志分析神器
  2. 2台xenserver组成的资源池开启HA存在的问题
  3. 外部接口需求怎么写_软件需求规约怎么写
  4. 手写体识别(数据挖掘入门与实践-实验11)
  5. 20172332 2017-2018-2 《程序设计与数据结构》实验三报告
  6. 设计师的就业前景分析!
  7. 利用python爬虫(part3)--正则表达式
  8. Java 泛型 泛型的约束与局限性
  9. Windows 中_T和L
  10. 通讯频道:TOM续约Skype破镜重圆
  11. ajax怎么找回地址栏,使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL...
  12. Map对象与实体类Object对象转换
  13. EXT Column Tree 的应用
  14. 电脑必备必装的软件工具神器,强烈推荐
  15. python语言程序设计教程赵璐电子版_python语言程序设计教程 赵璐pdf 相关实例(示例源码)下载 - 好例子网...
  16. IT项目管理表格集合
  17. HTML5 如何让背景图片自适应浏览器大小
  18. python做视频剪辑_视频自媒体人们,还用什么快剪辑,爱剪辑,几行python搞定一切...
  19. 净化实验室设计系统原理是什么样的
  20. RAID磁盘阵列、mdadm、群晖软RAID

热门文章

  1. xp系统 服务器访问账号,winxp系统下的网站出现访问的用户过多的解决办法
  2. Scratch3 二次开发系列
  3. [转]Redis内部数据结构详解-sds
  4. [NOI2009]管道取珠
  5. C# Wpf异步修改UI,多线程修改UI(二)
  6. 225 Implement Stack using Queues(用队列实现栈Medium)
  7. 学习C#十五天的总结
  8. 仿九天音乐图片切换技术[二],兼容ie,ff
  9. 尝试使用Microsoft IE 7.0 Beta 1
  10. 深度学习——第二次浪潮、寒冬与解冻