内部类之--闭包与回调

内部类之--闭包与回调前言之前在学习Java基础的时候对闭包和回调有一些简单了解,但是现在对这个概念已经很模糊了,所以现在借此机会进行一下回顾,记录一下一、概念闭包:闭包,故名思意就是,把一个包关起来,那么对于Java来说,这个包就是类了,因为在java中任何事物都是类,都是对象。那么闭包,直接理解上就是把一个类封装起来(封装就是包装差不多的意思)。然后结合一下,闭包内容放在内部类中,所以闭包就是用一个类把另一个类包装起来,说起来这和内部类没有什么不同点啊,为啥要专门用一个词来表述它呢?因为这个闭包还有很多其他的作用。而且其构造要比内部类复杂一点:1.闭包能够保护内部类里面的变量安全,不...

Java 2019-11-24 AM 3306℃ 1条

为什么需要内部类

为什么需要内部类前言今天小编给大家推出《Java编程思想》第10.8节为什么需要内部类一、概念​ 一般说来,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以认为内部类提供了某种进人其外围类的窗口。 ​ 内部类必须要回答的一个问题是:如果只是需要一个对接口的引用,为什么不通过外围类实现那个接口呢?答案是:“如果这能满足需求,那么就应该这样做。”那么内部类实现一个接口与外围类实现这个接口有什么区别呢?答案是:后者不是总能享用接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:每个内部类都能独立地继承自一个(接口...

Java 2019-11-23 PM 1312℃ 0条

嵌套类

嵌套类前言今天,小编给大家带来《Java编程思想》第10.7小节,嵌套类一、概念如果不需要内部类对象与外围类对象之间有联系,那么可以将内部类声明为static。 这通常称为嵌套类。普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时候,就不是这样了。1.要创建嵌套类对象,并不需要外围类对象。2.不能从嵌套类的对象中访问非静态的外围类对象。原文粘贴到这小编得暂停一下,对这个引用做一些说明:小编有如下几个问题:问题1:在内部类中是如何调用外部类中的变量的?问题2:外部类中的变量和内部类中的变量是否可以重名,如果可以,又是怎样来区分的?问题3:外部类该...

Java 2019-11-22 PM 3205℃ 2条

Java匿名内部类(三)--再仿工厂方法

Java匿名内部类(三)--再仿工厂方法前言本篇是对之前接口中的工厂方法设计模式的一个更改,将其从之前的使用普通类完成的任务,改成由匿名内部类进行实现。所以,在学习本篇之前小编建议大家去先看一下该篇文章,同时小编在该篇中将代码的执行过程已经讲的很清楚了,所以本篇也不对其做过多的赘述。代码interface Service {//抽象产品 void method1(); void method2(); } interface ServiceFactory{//抽象工厂 Service getService(); } class Implementation1 i...

Java 2019-11-21 AM 4045℃ 4条

Java匿名内部类(二)

Java匿名内部类(二)前言本篇将为大家带来《Java编程思想》10.6节,匿名内部类。一、匿名内部类和非匿名内部类对比我们先看一段匿名内部类的代码://Returning an instance of an anonymous inner class interface Contents{ int value(); } public class Parcel7{ public Contents contents(){ return new Contents(){//Insert a class definition private...

Java 2019-11-20 PM 6415℃ 7条

Java匿名内部类(一)

Java匿名内部类(一)前言今天小编又翻开珍藏已久的《Java编程思想》,想着在往后更新一节。打开书看了一下标题:匿名内部类,看了十几分钟,又静静的把书原封不动的合上,咱们还是从最简单的开始吧,书上讲的就留给以后更新吧。。。。。。。一、什么是匿名内部类匿名内部类我们可以在字面上将这个概念进行拆分成:匿名和内部类匿名:很好理解,通俗的讲就是没有名字内部类:在一个类里面在定义一个类,里面的类就是内部类,外面的这个类可以叫做外部类匿名内部类:就是在一个类里面在定义一个没有名字的类二、匿名内部类的语法格式本质:匿名内部类会隐式的继承一个类或者实现一个接口,或者说, 匿名内部类是一个继承了该类或者...

Java 2019-11-19 PM 4160℃ 4条

Java中静态和非静态的区别

Java中静态和非静态的区别前言前几天,有一个朋友问我静态和非静态的区别,于是自己就想着整理一下一、变量分类通过是否被static关键字修饰将变量分成两种:1.通过static修饰的变量叫做静态变量,也叫类变量2.没有static修饰的变量叫做非静态变量,也叫成员变量二、静态和非静态的使用static可以修饰变量,方法和类,下面我们举几个例子进行比较分析1.修饰变量public class staticTest { static int a = 10;//静态变量 int b = 20;//成员变量 public static void main(String[]...

Java 2019-11-18 AM 2910℃ 2条

JVM学习(七)-- 初始化对于类与接口的异同深入解析

初始化对于类与接口的异同深入解析前言类的初始化时机当Java虚拟机初始化一个类时,要求它的所有父类都已经被初始化,但是这条规则不适用与接口。1.在初始化一个类时,并不会先初始化它所实现的接口。2.在初始化一个接口时,并不会先初始化它的父接口。因此,一个父接口并不会因为它的子接口或者实现类的初始化而初始化,只有当程序首次使用特定接口的静态变量时,才会导致该接口的初始化。接下来的文章中将举例说明。示例1public class MyTest5 { public static void main(String[] args) { System.out.println(M...

Java 2019-11-17 PM 3136℃ 2条

JVM学习(六)--类加载器深入解析及重要特性剖析

类加载器深入解析及重要特性剖析前言今天对之前学习的JVM一些知识点进行一下总结,整理的有点乱,都是一些需要记忆的知识点,大家没事可以多看看。一、类的生命周期该图描述了整个类完整的生命周期:从磁盘上开始加载-->进入到内存当中-->销毁。<clinit>:表示对类的静态变量的初始化<init>:表示对实例变量的初始化上图包含类的执行过程:加载-->连接-->初始化-->生成对象-->为对象中的成员变量赋予默认值-->赋予指定的值二、类的加载1.类的加载的最终产品是位于内存中的Class对象2.Class对象封装了类在方法区内...

Java 2019-11-16 PM 2456℃ 1条

JVM学习(五)--类加载器准备阶段和初始化阶段的重要意义分析

类加载器准备阶段和初始化阶段的重要意义分析前言本篇将通过一个代码示例和对示例进行演变,来探讨一下类加载器准备阶段和初始化阶段的重要意义。代码1public class MyTest6 { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println("counter1:"+Singleton.counter1); System.out.println("...

Java 2019-11-15 AM 3064℃ 2条