类内部可以有另一个类,也就是内部类,如果带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,且不能手动调用

Classes and Objects :类和对象(2)的更多相关文章

  1. Classes and Objects :类和对象(1)

    类的定义:修饰符,class,类名,extends,逗号分隔的implements,类体{}规范的类名:首字母要大写,以后每个单词首字母都大写字段的定义:修饰符,类型,字段名按照封装的思想,字段通常定 ...

  2. DELPHI学习---类和对象(五篇)

    Classes and objects(类和对象) 类(或者类类型)定义了一个结构,它包括字段(也称为域).方法和属性:类的实例叫做对象:类的字段.方法和属性被称为它的部件(components)或成 ...

  3. 知乎上看到的关于类.class,对象.getClass

    public class TestDemo { //测试 @Test public void fun01() { TestDemo q=new TestDemo(); A a = new A(); q ...

  4. 危险代码:如何使用Unsafe操作内存中的Java类和对象

    危险代码:如何使用Unsafe操作内存中的Java类和对象—Part1 危险代码:如何使用Unsafe操作内存中的Java类和对象—Part2 危险代码:如何使用Unsafe操作内存中的Java类和对 ...

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

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

  6. Classes as objects

    Before understanding metaclasses, you need to master classes in Python. And Python has a very peculi ...

  7. 13_Python的面向对象编程-类class,对象object,实例instance

    1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         ...

  8. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  9. day24:面向对象设计与面向对象编程、类和对象

    一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...

随机推荐

  1. brew命令

    下面参考下网友的总结: 查看brew的帮助 brew –help 安装软件 brew install git 卸载软件 brew uninstall git 搜索软件 brew search git ...

  2. Javascript如何判断一个变量是数字类型?

    isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false.isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN) ...

  3. 9本java程序员必读的书

    来源:http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=202904638&idx=2&sn=21dd20438e32a ...

  4. (三)CSS高级语法

    选择器分组 可以对选择器进行分组,被分组的选择器可以分享相同的声明,用逗号将需要分组的选择器分开.例如: h1,h2,h3,h4,h5,h6 { color: green; } 继承以及其问题一般,子 ...

  5. IOS代码

    //// MJViewController.m// UITableView-编辑模式//// Created by mj on 13-4-11.// Copyright (c) 2013年 itcas ...

  6. RecyclerView(6)自定义RecyclerView.LayoutManager

    A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as wel ...

  7. jQuery $.post $.ajax用法

    jQuery $.post $.ajax用法 jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (Stri ...

  8. [CF676C]Vasya and String(尺取法,原题)

    题目链接:http://codeforces.com/contest/676/problem/C 原题题解链接:http://www.cnblogs.com/vincentX/p/5405468.ht ...

  9. zoj 3785 What day is that day? (打表找规律)

    题目 思路:比赛的时候有想过找循环节,但是,打表打错了. 后来,看着过了挺多人,就急了, 看了一下别人的时间 耗时都挺长的,就以为不是找规律, 没想到真是找规律,不过,这个题的数据可能挺大的. AC代 ...

  10. 设置mysql的interactive_timeout和wait_timeout的值

    1,为什么要重新设置这两个变量的值? 因为如果数据库默认这两个变量的值是8小时(即28800秒)如果在8小时之内没有连接到数据库,等下次再连的时候就会抛连接超时,或连接关闭这样的异 常,但是多连接几次 ...