类内部可以有另一个类,也就是内部类,如果带static则为静态内部类
静态内部类当然不能直接访问实例变量
内部类修饰符可以有四种,而外部类只有两种
 
内部类的意义:
这个内部类只适用于这个外部类
因为外部类的某些字段是private的,这个内部类要想访问除非是他的成员
生成的class文件也会在一起的,便于整理
 
内部类作为类的成员,当然也要有外部类的对象才能访问
静态内部类的使用,相当于包名

OuterClass.StaticNestedClass nestedObject =new OuterClass.StaticNestedClass();

非静态的内部类要动态生成:

OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();

内部类的字段如果覆盖了外部类的 非static字段,要全名访问
OuterObject.this.x
 
内部类有两种特殊形式,一是在块中,局部内部类
局部内部类只能访问所在块中的final变量(跟一般内部类的区别)
JDK8以后,如果这个局部变量初始化后就没变过,可以不声明为final
只有方法自己才能访问自己的参数,局部类不可以
JDK8以后,局部类也可以访问所在方法的参数了
 
静态方法的局部内部类当然只能访问外部类的静态字段
 
局部内部类不能有static成员,除非是常量
接口都是显式static的,所以不可能出现在块中,包括局部内部类里
 
 
跟局部内部类不同,另一种,匿名内部类只是一个表达式,可以出现在表达式能出现的任何地方
new,父类名称或接口名称,构造(),类体{}

HelloWorld frenchGreeting = new HelloWorld() {String name = "tout le monde";public void greet() {greetSomeone("tout le monde");}public void greetSomeone(String someone) {name = someone;System.out.println("Salut " + name);}};

这个类体里面定义的是一个子类或者实现类,会有覆盖或实现的方法
 
匿名内部类也是外部类的成员,访问规则同一般内部类或局部内部类
另外匿名内部类是没有构造的
 
局部内部类通常用来定义一个内部类型
匿名内部类通常用来实现接口,且多用于界面编程

Lambda 表达式(略)
Enum(枚举)

public enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY,//不加引号THURSDAY, FRIDAY, SATURDAY //后面没东西的话可以不加分号
}

枚举是一个类,可以有字段和方法的定义,且自带一些方法,如values()

for (Day d : Day.values()) {

枚举都是显式继承java.lang.Enum,所以不能继承其他了
构造或者是默认,或者是private,且不能手动调用

转载于:https://www.cnblogs.com/gcg0036/p/4143612.html

Classes and Objects :类和对象(2)相关推荐

  1. java string date_Java基础教程:Java之Object类,Objects类,Date类概念及使用!

    Object类概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指 ...

  2. Classes and Objects in Java--类和对象

    In this session, we will discuss classes and objects and learn how to create them in Java. 本章节我们学习类和 ...

  3. scala 类中的对象是类_Scala中的类和对象

    scala 类中的对象是类 Scala中的课程 (Classes in Scala) A class is a blueprint for objects. It contains the defin ...

  4. 第九节--绑定 -- Classes and Objects in PHP5 [9](转)

    /* +-------------------------------------------------------------------------------+ | = 本文为Haohappy ...

  5. Reloading Java Classes 101: Objects, Classes and ClassLoaders Translation

    The original link: http://zeroturnaround.com/rebellabs/reloading-objects-classes-classloaders/ A Bir ...

  6. python类和对象_Python类和对象

    python类和对象 Python is an object-oriented programming language. Python Classes and Objects are the cor ...

  7. scala 类中的对象是类_Scala类和对象– Singleton对象,伴侣类

    scala 类中的对象是类 Earlier we learned about Scala Programming Language and it's installation on Windows a ...

  8. 类与对象(PHP5)

    php_manual学习之翻译:第19章 类与对象(PHP5)(连载) [b]php_manual学习之翻译:第19章 类与对象(PHP5)之一:Visibility(访问控制)[/b] 由于php手 ...

  9. Classes and Objects > Classes > Passing Information to a Method or a Constructor

    Passing Information to a Method or a Constructor 将信息传递给方法或构造方法 The declaration for a method or a con ...

  10. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

最新文章

  1. 通过BCS对象模型使用筛选器
  2. 辛星php函数,辛星和您用更简略的方式去实现PHP中的验证码
  3. Java虚拟机04——垃圾收集器
  4. 068_xhtml语法
  5. Spring MVC使用webSocket保持长连接
  6. mac 强制退出程序_强行退出Mac上应用程序的6 种方法
  7. Centos编译安装Apache 2.4.6笔记 配置
  8. 极客时间和极客学院_极客历史记录的本周:Twitter的诞生,OS X十周年以及太空停留时间最长的时代即将结束...
  9. 【CF487E】Tourists【圆方树】【树链剖分】【multiset】
  10. 【Python科学计算系列】概率论与数理统计
  11. fe文件服务器,FE File Explorer
  12. PHP5.4连接sqlserver
  13. utils 定时器 (一) 多级时间轮
  14. 深度linux双显卡死机,Deepin配置IntelNvidia双显卡
  15. php元换成万元,1000元怎么换算成万元(元怎么换成万元)
  16. 掌控你的信息流:在自己的VPS上部署RSSHub
  17. android问号icon,CSS3 动态问号图标(使用工具生成)
  18. VMware界面大小调整两种方法超详细教程
  19. ACM MM 2022最佳论文奖出炉!哈工大聂礼强团队与快手合作斩获
  20. 胶质瘤新发现丨神经胶质瘤标志物研究

热门文章

  1. Linux下配置安装JupyterNotebook,windows下通过浏览器直接连接使用
  2. Eclipse 中最常用的快捷键大全
  3. [Algorithm NLP] 文本深度表示模型——word2vecdoc2vec词向量模型
  4. Qt获取系统时间并格式化输出
  5. java vector pair_STL: list ,set ,pair.map的使用
  6. 如何获取HTML元素所对应的javascript对象?
  7. php报错 Function name must be a string in xxxx
  8. java 遍历 Map 的六种方式 学习笔记
  9. php安装调式redis扩展,下载安装thinkphp5.0,调试Redis是否可以正常使用
  10. 深入体验java项目开发 pdf,深入体验Java Web项目开发.pdf