java面试题41 下面字段声明中哪一个在interface主体内是合法的? ()

java面试题41 下面字段声明中哪一个在interface主体内是合法的? ()

A private final static int answer = 42;
B public static int answer = 42;
C final static answer = 42;
D int answer;

1、接口:一种把类抽象的更彻底,接口里只能包含抽象方法的“特殊类”。接口不关心类的内部状态数据,定义的是一批类所遵守的规范。(它只规定这批类里必须提供某些方法,提供这些方法就可以满足实际要求)。

在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在Java中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

定义:【修饰符】interface接口名extends父接口1,赋接口2,.......//不用extends父接口1...就是定义接口
{
//零到多个常量定义......
//零到多个抽象实例方法定义.....
}

【语法说明】:1、修饰符可以是public或者省略,如果省略public访问控制符,则是包访问权限。

2、接口里所有的成员都是public修饰,因为接口是公共的,所有类都能访问的。接口里属性默认的修饰为:public static final,不管属性前面写没写都会默认加上,同样方法的默认修饰为:public abstract,内部类:public static。都会默认加上。

3、成员里面不能有构造器,不能有初始化块。

4、一个java源文件里最多只能定义一个接口,因为其是public修饰的,存储的名字必须和public修饰的类的名字一样,而接口可以看成一个特殊的类。

5、接口的继承:一个接口可以有多个直接父接口,接口只能继承接口,不能继承类。

【注意点】:a、子接口继承父接口,将会获得父接口里定义的所有抽象方法,常量属性,内部类等定义。

3、接口的使用:语法:【修饰符】class类名extends父类implements接口1,接口2......{ 类体 }。

【注意事项】

a、说明:一个类可以同时继承一个父类,和多个接口,只是extends必须放置implements之后。

b、接口不能创建实例,但是可以声明变量,但其一定是引用到了其实现类的对象。

c、主要用途就是被类实现。

d、实现的方法:利用implements关键字

e、一个类继承了一个接口之后,必须完全实现这些接口里所定义的全部抽象方法(也就是要在子类里面重写这些类方法),否则,如果没有完全实现,那么此类也只能定义成抽象类。

f、重写接口方法时,修饰符只能比父类更大,或者相等,所以其也必须是public修饰符。

g、所有接口类型的变量都可以直接赋给Object类型的变量。

贴上示例代码(引用于李刚的疯狂java):

    

//定义一个接口Outputinterface Output{//接口里只能把属性定义成常量int MAX_CACHE_LINE = 50;//主要是定义存储空间//接口里定义的只能是public的抽象方法void out();void getData(String msg);   }//定义一个接口Productinterface Product{int getProduceTime(int a);}//让printer类实现定义的接口public class Printer implements Output,Product{private String [] printData = new String[MAX_CACHE_LINE];private int dataNum =0;public void out()//重写父接口Output的方法{while(dataNum>0){System.out.println("打印机打印"+printData[0]);System.arraycopy(printData,1,printData,0,--dataNum);}}public void getData(String msg)//重写父接口Output的方法{if(dataNum>=MAX_CACHE_LINE){System.out.println("已满");    }else{printData[dataNum++] = msg;}}public int getProduceTime(int a)//重写父接口Product的方法{return a = a;}public static void main(String[] args){//父接口可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是PrinterOutput O= new Printer();O.getData("xiuxiu");O.out();//直接调用输出的方法//父接口可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是PrinterProduct p = new Printer();System.out.println(p.getProduceTime(82));//所有接口类型的引用变量都可以直接赋值给Object类型的变量Object obj = p;Object obj1 = O;}}

 4、抽象类和接口的异同:

相同:

1、都有抽象方法。

2、都不能创建实例。

3、子类继承其后都必须全部实现其内的抽象方法,如果没有全部实现的话,类只能定义成抽象类。

不相同:

1、接口里只能有抽象方法,抽象类里可以有普通方法。

2、接口类里的属性默认有修饰语publicstaticfinal,但是抽象类中的属性可以是普通的。

3、接口没有初始化块,抽象类里有。

4、接口可以有多个父接口,但是抽象类只能有一个父类。

接口中的属性在不提供修饰符修饰的情况下,会自动加上public static final

注意(在1.8的编译器下可试):

(1)属性不能用private,protected,default 修饰,因为默认是public

(2)如果属性是基本数据类型,需要赋初始值,若是引用类型,也需要初始化,因为默认有final修饰,必须赋初始值;

(3)接口中常规的来说不能够定义方法体,所以无法通过get和set方法获取属性值,所以属性不属于对象,属于类(接口),因为默认使用static修饰。

答案为B

我是歌谣,有什么不合理之处欢迎指出。喜欢敲代码,无聊刷刷题

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面试题42从以下哪一个选项中可以获得Servlet的初始化参数?

java面试题42从以下哪一个选项中可以获得Servlet的初始化参数? A Servlet B ServletContext C ServletConfig D GenericServlet 蒙蔽树上蒙蔽果,蒙蔽树下你和我 ServletContext对象:servlet容器在启动时会加载web应用,并为每个web应用…

asp.net如何生成图片验证码

新建一个页面image.aspx,添加命名空间: usingSystem.Drawing.Imaging;usingSystem.IO;然后在Page_load事件拷入如下代码: //生成4位的验证码stringtmp RndNum(4); HttpCookie a newHttpCookie("ImageV",tmp); Response.Cookies.Add(a…

Java中如何实现代理机制(JDK、CGLIB)

代理分为两种: 1.静态代理 2.动态代理 动态代理又分为两种:jdk 实现 ;Cglib 实现 3.Java中如何实现代理机制(JDK、CGLIB) JDK动态代理:代理类和目标类实现了共同的接口,用到InvocationHandler接口。CGLIB动态代理…

java面试题43要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )

java面试题43要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( ) A让该类不使用任何关键字 B使用private关键字 C 使用protected关键字 D 使用void关键字 答案为A 我是歌谣,如果有什么不合理之处指出。我是歌谣&…

app.config数据库路径问题

最近做一个小东西,用到了subsonic,因为用的是sqlite,数据库的路径问题又被提了上来。在connectionStrings里面只能指定绝对路径。对于sqlite,access这样的数据库来说,却需要使用到相对路径,否则发布后就会出问题。自己…

java面试题44关于 Socket 通信编程,以下描述正确的是:( )

java面试题44关于 Socket 通信编程,以下描述正确的是:( ) A 客户端通过new ServerSocket()创建TCP连接对象 B 客户端通过TCP连接对象调用accept()方法创建通信的Socket对象 C 客户端通过new Socket()方法创建通信的Socket对象 …

Java弱引用(WeakReference)的理解与使用

转:https://blog.csdn.net/zmx729618/article/details/54093532 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和j…

在VB应用程序中调用Excel2000

Visual Basic简称(VB)是设计Windows应用程序强有力的开发工具,“全球绝大多数Windows应用程序都是用VB开发的”; Excel是目前使用最广泛的办公应用软件之一,它具有强大的数学分析与计算功能,包括很多VB没有的求值数学表达式的函数…

shiro学习(7):shiro连接数据库 方式二

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 我们先看一下目录结构 首先 jar包引入 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0&quo…

java中的4种reference的差别和使用场景(含理论、代码和执行结果)

转:https://blog.csdn.net/aitangyong/article/details/39453365 我们知道java语言提供了4种引用类型&#xff1a;强引用、软引用(SoftReference)、弱引用&#xff08;WeakReference&#xff09;和幽灵引用&#xff08;PhantomReference&#xff09;&#xff0c;与引用密切相关…

【vue开发】 父组件传值给子组件时 ,watch props 监听不到解决方案

解决方案&#xff1a; watch:{  data:{ immediate:true,handler:function(){ } }} 示例&#xff1a; 转载于:https://www.cnblogs.com/xiaohuizhang/p/11393444.html

shiro学习(8):shiro连接数据库 三

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 我们先看一下目录结构 首先 log4j.properties ### \u914D\u7F6E\u6839 ### log4j.rootLogger error,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE### \u8BBE\u7…

Java 中的 Reference

1、强引用&#xff08;StrongReference&#xff09; 强引用不会被GC回收&#xff0c;并且在java.lang.ref里也没有实际的对应类型。举个例子来说&#xff1a;     Object obj new Object();     这里的obj引用便是一个强引用&#xff0c;不会被GC回收。 2、软引用&…

[转贴]暴雪的霸王条款是否合理?

暴雪的霸王条款是否合理&#xff1f; 类似于这样的霸王条款很多&#xff0c;但暴雪是个典型&#xff0c;谁让暴雪树大招风呢&#xff1f;暴雪蛮横地宣布游戏中的所有数据归暴雪所有&#xff0c;那么自然也包括玩家辛辛苦苦所得来的虚拟财产&#xff0c;暴雪这样做无疑是出于以下…

Java 中常用缓存Cache机制的实现

转&#xff1a;https://www.cnblogs.com/JAYIT/p/5647924.html 所谓缓存&#xff0c;就是将程序或系统经常要调用的对象存在内存中&#xff0c;一遍其使用时可以快速调用&#xff0c;不必再去创建新的重复的实例。这样做可以减少系统开销&#xff0c;提高系统效率。 所谓缓存&…

巧用小程序·云开发实现邮件发送功能丨实战

先看效果图&#xff1a; 通过上面的日志&#xff0c;可以看出我们是158开头的邮箱给250开头的邮箱发送邮件&#xff0c;下面是成功接收到的邮件。 准备工作 1、qq邮箱一个2、开通你的qq邮箱的授权码&#xff08;会具体讲解&#xff09;3、注册自己的小程序&#xff08;因为只有…

shiro学习(10):servelet实现权限认证一

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><version>1.2.3</version></dep…

JAVA多线程及线程状态转换

转发:https://www.cnblogs.com/nwnu-daizh/p/8036156.html 以下内容整理自&#xff1a;http://blog.csdn.net/wtyvhreal/article/details/44176369 线程&#xff1a;是指进程中的一个执行流程。 线程与进程的区别&#xff1a;每个进程都需要操作系统为其分配独立的内存地址空…

shiro学习(11):servelet实现权限认证二

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><version>1.2.3</version></dep…

[MOSS开发]:如何使用用户控件

如果是纯手工开发web part&#xff0c;其实还是比较困难的&#xff0c;因为这种类型的web part是以类库的形式出现&#xff0c;没有可视化的界面&#xff0c;完全由代码写出来&#xff0c;包含控件的样式&#xff0c;属性&#xff0c;事件等等。开发过自定义控件的朋友可能会感…