栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java核心技术卷Ⅰ(一)基础回顾(第六章接口与内部类、lambda表达式)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java核心技术卷Ⅰ(一)基础回顾(第六章接口与内部类、lambda表达式)

读书读着读着感觉实在难吸收,从第五章反射部分的内容开始书和视频结合着学习,故以下部分内容源于尚硅谷及java1234。

一.接口

1.既有父类又继承了接口,当父类与接口有同名变量时,分别调用的方法如下:

接口中定义的变量省略了public static final,为常量,故在子类中无法修改ball对象。

2.java8中接口的新特性

接口中可以实现default 方法,即子类可以选择不重写该方法,为代码后期的更新提供了便捷。 其调用必须通过实现类的对象才可以调用。

接口中定义的static方法,子类实现类都无法调用(直接显示undifined),只有接口自己可以调用。

若接口与父类中出现了同名同参数的方法,在没有重写的情况下,子类将调用父类的方法。

如果实现类同时实现了多个接口且这多个接口中有同名的default(默认)方法,要重写该方法,不重写的话会报错接口冲突。

二.内部类

1.实例化内部类:静态类:在调用内部类的构造方法时同时需要外部的调用。

非静态类,先有外部类的对象。

 

如此例中dog是person的静态内部类,bird是person的非静态内部类。

2. 成员的内部类中调用外部类的结构。

 

3.匿名内部类:
简单说,就是没有名称的内部类,当一个接口只有一个抽象方法,我们不想要通过子类来实现,比较麻烦,可以使用匿名内部类。

 

下面的例子中,传统的实现方式是,新建一个dog类继承抽象类animal并在其中重写animal类的eat方法,然后再main函数中新建dog类的对象,调用重写后的eat方法显示狗吃肉。而使用匿名类的两种方法相当于创建了抽象类的对象,并在其中直接重写抽象方法,然后直接调用eat方法。

另外,在匿名类外部的局部便令,如果匿名内部类想要访问,无法修改,因为其默认为final。

 上面是抽象类的匿名内部类使用,下面为接口:(接口的对象,作为方法参数进行传递)

 

 

三.lambda表达式  

 lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。用来替代匿名内部类。本质是一个函数。

eg(java1234)

下面的例子里面,使用lambda表达式代替匿名内部类,在括号中实现了抽象方法,此后直接通过接口的对象调用重写后的方法。

 

 一些精简的语法:①参数类型可以省略

②只有一个参数的时候,小括号()可省略

③只有一条语句的时候大括号{}可以省略。

④如果那一条语句是return……,则要省略return。

 在lambda表达式中有时需要调用其它方法,语法为 对象::方法名

接口的实现是通过构造方法实现的,那么语法为类名::new。

 另外,与匿名内部类类似,lambda表达式所捕获的外部变量同样默认为final,在lambda表达式内不能对其修改。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号