Default 关键字| 学习笔记

简介: 快速学习 Default 关键字。

开发者学堂课程【 Java 面试疑难点串讲1:面试技巧及语言基础:Default 关键字】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/481


Default 关键字


最初时代开始,Default 基本上都是作为 swich 的语句联合使用package cn. mldn . demo;

public class TestSwitch {

public static void main(String[ ] args) {

int ch=1;

switch (ch)

case 0 : System. out.println("内容是0");

          case 1 : System. out . println("内容是1");

          case 2 : System. out. println("内容是2");

          default : System. out . println("默认值");

}

  }

}

内容是1

内容是2

默认值

所以最初在编写 swich 的时候往往都会在每一个 case 之中增加一些 break 语句。

package cn.mldn. demo;

public class TestSwitch {

public static void main(String[ ] args) {

      int ch=6;

       switch (ch) {

          case 0:

System . out . print1n("内容是0");

break;

case 1:

   System. out . println("内容是1");-

   break;

case 2:

System. out , println("内容是2");

break;

default :

System. out . print1n("默认值");

       }

   }

}

从 JDK1.8开始出现了一些新的语法环境。

Lambda 表达式出现,接口的问题开始出现,假若此刻在最初某个项目的1.0版本里面定义有一个接口的方法,但是后来这个接口的子类特别多,大约有1000W个,在这样的情况下,如果要对接口扩充一个方法(并且这个方法所有子类的实现都一样),在这样的情况下,代码的编写就会异常的繁琐,此刻 Java 重新定义了接口的定义,出现了 default 与 static 定义接口的方法,而 default 方法好比一个普通方法,必须有实例化对象,static 方法可以直接使用接口名称进行调用。

package cn.mldn. demo;

interface IMessage {

public void print( );//抽象方法

default void getMsg( ) {//是一个普通方法,JDK 1,8之后才有

System.out.println(“******************************”);

  }

}

Class MessageImpImp1 implements IMessage {

@Override

Public void print ( ){//覆写的方法

System.out.println(this.getClass( ).getName());

    }

}

Public class TestDefault {

  Public static void main(String[ ] args) {

       IMessage msg=new MessageImp1( );

       msg.getMsg( );

  }|

default 在接口中的出现改变了传统接口实现模式,可以定义普通方法,这样假设某些方法对于所有的子类都具有同样的实现,则可减少定义,但此类形式暂未完全推广开,先作为连接即可。

相关文章
|
存储 数据库
MySQL-函数和存储过程区别
MySQL-函数和存储过程区别
224 0
|
SQL 缓存 Java
【吐血整理】MyBatis从入门到精通
本文介绍了 MyBatis 的使用指南,涵盖开发环境搭建、基础操作实例和进阶特性。首先,详细描述了 JDK 和 IDE 的安装及依赖引入,确保项目顺利运行。接着,通过创建用户表和实体类,演示了 CRUD 操作的全流程,包括查询、插入、更新和删除。最后,深入探讨了动态 SQL 和缓存机制等高级功能,帮助开发者提升数据库交互效率和代码灵活性。掌握这些内容,能显著提高 Java 编程中的数据库操作能力。
2035 4
|
监控 Linux
Linux 运行进程实时监控pidstat命令详解
Linux 运行进程实时监控pidstat命令详解
461 0
|
数据采集 自然语言处理 机器人
ACL2024 | OceanGPT(沧渊):面向海洋科学任务的大型语言模型初探
本文提出了为海洋领域打造的大型语言模型OceanGPT,它能够处理面向海洋科学的问答等生成任务。
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的最佳实践
【5月更文挑战第29天】 在当今快速迭代和持续部署的开发环境中,微服务架构已成为许多组织的首选解决方案。本文将深入探讨如何通过一系列后端开发最佳实践来构建和维护一个高效的微服务系统。我们将从服务的划分与设计原则出发,讨论如何确保系统的可扩展性、灵活性以及容错能力,并最终实现一个既满足业务需求又能适应未来变化的后端架构。
GEE错误——Tile error: Arrays must have same lengths on all axes but the cat axis
GEE错误——Tile error: Arrays must have same lengths on all axes but the cat axis
244 1
|
自然语言处理 Linux 编译器
Linux编译器——gcc/g++使用
Linux编译器——gcc/g++使用
282 0
|
Ubuntu Linux UED
WSL 2 更改默认安装的 Linux 发行版
WSL 2 更改默认安装的 Linux 发行版
|
Java 程序员 Apache
模板引擎——FreeMarker初体验
FreeMarker 是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。