QQ个性网:专注于分享免费的QQ个性内容

关于我们| 网站公告| 广告服务| 联系我们| 网站地图

搜索
编程 JavaScript Java C++ Python SQL C Io ML COBOL Racket APL OCaml ABC Sed Bash Visual Basic Modula-2 Logo Delphi IDL Groovy Julia REXX Chapel X10 Forth Eiffel C# Go Rust PHP Swift Kotlin R Dart Perl Ruby TypeScript MATLAB Shell Lua Scala Objective-C F# Haskell Elixir Lisp Prolog Ada Fortran Erlang Scheme Smalltalk ABAP D ActionScript Tcl AWK IDL J PostScript IDL PL/SQL PowerShell

从头再来:Java中的接口(接口可以是private的吗?)

日期:2025/04/05 16:03来源:未知 人气:53

导读:Java的接口Java中可以定义一个私有接口吗?答案是肯定的。那为什么会用到私有的接口?回答这个问题之前先看看Java中的接口Java的接口接口提供了一种接口和实现分离的方法,在Java中通过关键字interface定义,接口中的方法都是抽象的(没有实现体)。接口在现实中使用的太多了,比如插座的接口,手机的充电接口,耳机接口。接口只定义了协议,实现者只要实现这个接口定义即可。比......

Java的接口

Java中可以定义一个私有接口吗?答案是肯定的。

那为什么会用到私有的接口?

回答这个问题之前先看看Java中的接口

Java的接口

接口提供了一种接口和实现分离的方法,在Java中通过关键字interface定义,接口中的方法都是抽象的(没有实现体)。

接口在现实中使用的太多了,比如插座的接口,手机的充电接口,耳机接口。接口只定义了协议,实现者只要实现这个接口定义即可。比如,3.5mm的耳机接口,不同的厂商可以制造各种颜色的,形状的耳机,只要遵循接口定义即可。

接口和抽象类的区别可以参考:Java中的接口和抽象类(Interface and Abstract Class)的区别

看一个JDK定义的一个接口Runnable。

Runnable接口

接口中的方法不指定自动是public的,变量自动是static和final的,因此接口可以当作定义常量的工具类用。我们反编译一个类验证一下。

自定义一个接口

用javap反编译一下,看看结果,从结果看方法默认是public的。

反编译结果

接口的多重继承(实现)

Java的类是不能多重继承的,如果想要实现多重继承的效果需要借助内部类,请参考:Java中怎么继承一个非静态的内部类?

然而接口是可以多重继承的,在多重继承的时候要考虑接口的冲突。

多重继承时,方法冲突

接口A和B都定义了相同的方法,只是返回值不同。类C实现A和B的时候就不知道到底实现那个接口的方法了。

接口的嵌套

接口中是可以嵌套在其他接口或者类中的,这就是接口的嵌套。接口中嵌套接口的情况比较少见,但是类中嵌套接口的情况就很多了。

接口嵌套在类中时,可以定义为private,private接口只能在当前类中使用,这样可以使此类有更好封装性,可读性和可维护性,这个就像使用内部类一样。

私有的接口

欢迎留言讨论,如果发现任务错误,请批评指正,谢谢!

关于我们|网站公告|广告服务|联系我们| 网站地图

Copyright © 2002-2023 某某QQ个性网 版权所有 | 备案号:粤ICP备xxxxxxxx号

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告