抽象方法

Java8--Lambda表达式

被刻印的时光 ゝ 提交于 2019-11-30 06:19:45
一、Lambda简述 1.1、Lambda概述 ​ Lambda 表达式 可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。 匿名 :它不像普通方法那样有一个明确的名称; 函数 :Lambda 表达式是函数是因为它不像方法那样属于某个特定的类,但和方法一样,Lambda 有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表; 传递 :Lambda 表达式可以作为参数传递给方法或存储在变量中; 简洁 :无需像匿名类那样写很多模板代码; So That: lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于 实现由函数式接口定义的唯一抽象方法 使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例 可以将 lambda 表达式视为一个对象,可以将其作为参数传递 1.2、Lambda简介 Lambda 表达式是一个 匿名函数 (对于 Java 而言并不很准确,但这里我们不纠结这个问题)。简单来说,这是一种 没有声明的方法,即没有访问修饰符,返回值声明和名称 。 Java 中的 Lambda 表达式通常使用语法是 (argument) -> (body) : (arg1, arg2...) -> { body } (type1 arg1, type2 arg2...) -

抽象类和接口

倾然丶 夕夏残阳落幕 提交于 2019-11-30 04:22:50
抽象类( abstract class ) 是什么 具有所有类的特性:属性、方法,该类不能建立对象,只能声明指针和引用,用于基础类的接口声明和运行时的多态,只能继承。所以一般都做为父类存在 能干什么 做父类用,让子类继承,抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。 在哪用 抽象类 抽象类:抽象类就是不能使用 new 方法进行实例化的类,即没有具体实例对象的类,抽象类有点类似于“模板”的作用 , 目的是根据其格式来创建和修改新的类,对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象,当一个类被声明为抽象类时,要在这个类前面加上修饰符 abstract, 在抽象类中的成员方法可以包括一般方法和抽象方法 抽象方法 抽象方法:抽象方法就是以 abstract 修饰的方法,这种方法只声明返回的数据类型,方法名称和所需要的参数,没有方法体,也就是说抽象方法只需要声明而不需要事先,当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是 abstract 的,而这个子类也必须是抽象的,即声明为 avstract 抽象方法:只有方法的声明,没有方法的实现。以分号结束: abstract int abstractMethod( int 注意:

抽象/接口/静态继承/命名空间与实战(一)

落爺英雄遲暮 提交于 2019-11-29 23:43:00
抽象/接口/静态继承/命名空间与实战 类的自动加载的实现原理 // 类的自动加载 // 查看当前脚本所在的目录 //echo __DIR__, '<br>'; //include __DIR__ . '/inc/Test1.php'; //include __DIR__ . '/inc/Test2.php'; //include __DIR__ . '/inc/Test3.php'; // 如果当前脚本使用了几十上百这样的类, 上面的方式就很不人性 // 使用下面的自动加载机制, 会根据客户端调用的类, 自动进行加载,效率高, 不出错 // php标准函数库中提供了一个自动加载文件的注册函数,可以实现这个功能 // 这个函数,在当前脚本引用一个未加载的文件时, 会自动调用它的回调方法来加载这个文件 spl_autoload_register(function ($class){ // include __DIR__ . '/inc/Test1.php'; // 将include中的类名Test1用变量替换掉,这样就实现了最简单的自动加载 // 后面我们会使用命名空间来完善这个函数,目前大家先理解到这里即可 include __DIR__ . '/inc/'.$class.'.php'; }); $test1 = new Test1(); echo $test1->get(), '

Spring与Quartz实现定期任务

左心房为你撑大大i 提交于 2019-11-29 23:35:00
日志说明: 1、不对Spring的基础环境配置做详细说明; 2、只是记录一下暂时自己从网上及参考手册上查找到的经测试有用的资料 3、记录一下,方便以后自己或需要的朋友使用,后续有新的有用资料会及时更新 4、可查看Spring4.0参考手册:Part Ⅵ.Integration的27.6Using the Quartz Scheduler 5、测试时用的却是Spring3.1.3 注意: 引用Quartz时最好使用1.8.5 (目前最新的是2.2.1,此版本与Spring3.1.1暂不兼容,实测时启动项目会报错,具体什么错误给忘了) <!-- 任务调度测试实现一 : 自定义的任务对象com.bocloud.equipment.test.ExampleJob 必须继承QuartzJobBean类,实现抽象方法executeInternal 每次执行任务时,都会新创建一个任务对象. --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <!-- 属性jobClass不能通过ref来指定为exampleJob对象,该属性接收的是Class类型的参数 进行任务调度时,每次都是一个新的jobClass对象去执行executeInternal方法 --> <property

Java第二阶段笔记

随声附和 提交于 2019-11-29 22:44:49
抽象类不能创建对象 抽象类可以有构造方法 成员变量 成员方法 静态方法 final修饰的方法(只能被子类调用,不能被重写) 抽象方法(可以有0个或多个) 抽象方法不能有方法体,只能以;结尾,只能存在于抽象方法中 抽象方法必须被子类实现,如果子类不能实现父类的抽象方法,那么子类也必须是抽象类 接口,用interface修饰,是一种引用数据类型 可以包含 抽象方法(public abstract)可省略 非抽象方法(加default关键字) 属性 常量(public static final)可省略 不可以有构造方法,因为接口不是类 接口与类的关系 1,类可以实现接口的方法,用implements关键字(实现关系,必须实现接口中所有的抽象方法) 2,一个类存在继承关系,又存在实现关系时,extends关键字在前;如果父类与接口中有完全相同的方法,子类/实现类,实现的是父类的方法;如果父类和接口中有重名方法,要求两个方法要构成方法的重载 Java第二阶段之数组深化 数组复制 for (int[] arr:c) { for (int i :arr) { System.out.print(i+"\t"); } } 数组内容的增删本质上也是数组的复制 array工具类 Arrays.toString(a);打印数组 Arrays.sort(a);排序 Arrays.binaySeach(a

工厂模式,从第三方登录说起

血红的双手。 提交于 2019-11-29 22:14:39
现在的很多平台在登陆的时候,下面都会有一排选项,可以选择微信、QQ、微博账号等登陆,这些账号对平台来说都是第三方账号。第三方账号登陆是最近几年流行起来的,第三方账号登录一般都是基于 OAuth2.0 协议开发的。如果你不了解 OAuth2.0 协议,可以自行百度,也许会对你看这篇文章有所帮助。 现在由于公司要给平台引入流量,为了降低注册门槛,让更多的人来使用你们的平台,领导决定在你们的平台上接入第三方账号登陆功能。现阶段先接入微信、支付宝、QQ、GitHub 这四个第三方账号登陆。这个任务也顺利的落到你的头上,由于你了解 OAuth2.0 协议,你知道这个是一个固定的三段式操作,第一步获取 Authorization Code ,第二步获取 Access Token ,第三步调用信息接口,但是每个平台返回来的数据字段或者格式可能会不一样,所以你根据你的开发经验,为第三方账号登录模块抽取出来了一个 IdentityProvider 抽象类,该类主要有上面提到的三步需要的接口, IdentityProvider 类的代码如下: public abstract class IdentityProvider { // 获取Authorization Code abstract void authorizationCode(); // 获取 Access Token abstract

java中的抽象类和抽象方法

做~自己de王妃 提交于 2019-11-29 20:04:59
一、当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。 例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。 所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。 // 这就是一个抽象类 abstract class Animal { String name; int age; // 动物会叫 public abstract void cry(); // 不确定动物怎么叫的。定义成抽象方法,来解决父类方法的不确定性。抽象方法在父类中不能实现,所以没有函数体。但在后续在继承时,要具体实现此方法。 } // 抽象类可以被继承 // 当继承的父类是抽象类时,需要将抽象类中的所有抽象方法全部实现。 class cat extends Animal { // 实现父类的cry抽象方法 public void cry() { System.out.println("猫叫:"); } 二、用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。 三、抽象方法不能有方法主体。格式如下: abstract void xxx(); 四、抽象类不能被实例化

接口和抽象类的区别

早过忘川 提交于 2019-11-29 19:09:55
相同点: 都不能创建对象 都可以定义抽象方法,并一定在子类重写。    不同点: 关键字不同: abstract 、 interface 接口中的方法 必须是抽象方法 ,抽象类中还可以有普通方法 接口中的所有方法的修饰符 必须是public ,而抽象类中的方法可以是任意修饰符 接口可以有 多实现 ,而抽象类只能 单继承 来源: https://www.cnblogs.com/zbzb1/p/11527685.html

07_Java8新增的Lambda表达式

那年仲夏 提交于 2019-11-29 16:45:03
【Lambda表达式概述】 Lambda表达式支持将代码块作为方法参数,Lambda表达式允许将使用简洁的代码来创建只有一个抽象方法的接口的实例。(这种接口称为 函数式接口 ) 【入门实例】 package com.Higgin.Lambda; import org.junit.Test; interface Command{ //接口里定义的process封装行为 public void process(int[] target); } class ProcessArray{ public void process(int[] target , Command cmd){ cmd.process(target); } } public class LambdaDemo { /** * Lambda的方式 代替匿名内部类 */ public static void main(String[] args) { ProcessArray pa=new ProcessArray(); int[] array={1,2,3,4,5}; pa.process(array, (int[] target)->{ int sum=0; for(int tmp:target){ sum=sum+tmp; } System.out.println("数组的和为"+sum); }); } /** *

类和对象

落花浮王杯 提交于 2019-11-29 16:37:24
类和对象 面向对象概述 所谓对象就是某种事物的抽象(功能),抽象包括数据抽象和过程抽象两个方面,数据抽象就是定义对象的属性;过程抽象就是定义对象的操作(行为)。 面向对象的三(四)大特征:封装,继承,多态,(抽象)。 封装 :把描述对象属性的变量及实现对象功能的方法结合起来,定义一个程序单位,并保证外界不能任意 更改内部的属性,不能任意调动内部的方法接口。 继承 :大大增强了代码的可复用性,提高了软件的开发效率,为程序的修改扩充提供了材料。Java 不支持多继 承(菱形继承方式),为了弥补 Java 不支持继承带来的子类不能享用多个父类的成员缺憾,我们在后面的学习中会 引入“接口”这个概念。 多态 :同一个方法名,根据被调对象的不同,实现了不同的行为。 主要分成静多态(方法的重载)和动多态(继承,重写,向上造型)。 抽象 :使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。 类和对象概述 1. 类的概念 类是一种 新的数据类型 ,类定义数据类型的属性(变量,字段),行为(方法)。对象是基于类的具体实现,又称为类的实例。 类是一个抽象概念 , 对象是类的具体实现 类所定义的对象是不唯一的,依需求(需要)而定 例: 定义一个类,人