A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张淼 中级黑马   /  2012-9-19 23:00  /  2724 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

尝试编译并运行以下代码,会发生什么?     (  )
import java.util.*;
public abstract  interface Test1
{
       public void test();
}
public class Test2 implements Test1
{
       public void test(){}
}
A.    编译错误
B.     运行期异常
C.     编译通过
D.  以上都不对

该题的答案是A,但是我不太清楚错误的点具体在哪里,是因为使用了两个public,还是接口不能用abstract修饰,还是其他的错误。

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

10 个回复

倒序浏览
问题出在   interface 不能用abstract 修饰。
回复 使用道具 举报
import java.util.*;
public abstract  interface Test1 //一个文件中不能有两个被public修饰的类或接口,编译通不过
{
       public void test();
}
public class Test2 implements Test1//一个文件中不能有两个被public修饰的类或接口,编译通不过
{
{
       public void test(){}//没有主函数,运行通不过
}
回复 使用道具 举报
疯子雨 发表于 2012-9-19 23:06
问题出在   interface 不能用abstract 修饰。

那两个public没有问题?还是接口和类可以各有一个public?
回复 使用道具 举报
吕书凯 发表于 2012-9-19 23:12
连主函数入口都没有,怎么可能编译通过

如果不考虑主函数的问题呢?
回复 使用道具 举报
首先,值得一说的是,接口经过编译后,也是一个.class文件,即接口在java中也是一个类,Java中明确规定,一个java程序中只能有且只有一个被public修饰的类,所以下面的代码是可以编译通过的:
public class Test2 implements Test1{

        public void test() {
               
        }       
}

abstract interface Test1{
        void test();
}

而加上public后,则不能编译通过,
public class Test2 implements Test1{

        public void test() {
               
        }       
}

public abstract interface Test1{
        void test();
}

楼主可以试着编写一个接口,然后编译看看是否是一个.class文件
回复 使用道具 举报
夏天 初级黑马 2012-9-20 00:06:56
7#
让我来告诉你真相
此题是编译不通过,编译器会报The public type Test1 must be defined in its own file这个错误。
意思是让你在Test1这个接口的自己的文件里定义。
其实也就是说 不能在同一个包中,定义两个public类或接口。

而没有主函数,是在运行时期的错误,运行时,找不到程序的入口。
回复 使用道具 举报
interface默认就是abstract,所以写与不写都一样,这里没错误。
  1. import java.util.*;
  2. public abstract   interface InterfaceTest
  3. {
  4.        public void test();
  5. }
复制代码
这个完全可以编译通过的。
问题出在两个public上,一个Java文件可以有多个类,
但是java在public类开始编译机制的,并且这个public类名必须与文件名相同。否则无法编译。
回复 使用道具 举报
类用public修饰后类名必须与文件名保持一致
同一个java文件中不能有两个public修饰的类或接口同时存在
abstract修饰抽象类,interface代表接口,接口是特殊的抽象类,不用abstract修饰
在定义一个主函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马