黑马程序员技术交流社区

标题: 关于java的类的问题 [打印本页]

作者: 毕影彬    时间: 2012-10-28 22:30
标题: 关于java的类的问题
本帖最后由 毕影彬 于 2012-10-29 18:21 编辑

、下面2个文件位于相同目录下,编译运行后会出现的情况是( )。  
//File P1.java
package MyPackage;
class P1{
void afancymethod(){
  System.out.println("What a fancy method");
  }
}
//File P2.java
public class P2 extends P1{
  public static void main(String argv[]){
P2 p2 = new P2();
p2.afancymethod();
  }
}
A、2个文件都可以编译,P2运行输出“What a fancy method”
B、2个文件都不能编译  
C、2个文件都可以编译,P2运行时报错误  
D、P1编译成功,P2编译时报错误  
选哪个呢?为什么?请说的详细点,谢谢

作者: 种生祥    时间: 2012-10-28 22:38
本帖最后由 种生祥 于 2012-10-28 22:47 编辑

没有选项
P1.java编译错误
public class P2 extends P1//public去掉之后可以成功,因为带main的类前面如果有public的话,必须保存为该类名.java
P2.java编译成功
p2.afancymethod();//子类对象调用子类从父类继承的afancymethod()方法
就是这样啊
作者: 陈小红    时间: 2012-10-28 23:32
选D,P2.java编译时找不到P1类,因为虽然在同一个文件夹下,但P1类打包了,其类的全名应是mypackage.P1。
作者: 何创    时间: 2012-10-28 23:39
我觉得吧 应该选择D ,因为在主函数中通过P2的对象调用的,并且P2对象调用子类从父类继承的afancymethod()方法。

作者: 李春生    时间: 2012-10-29 00:17
选择D ,P2无访问P1,因为P2继承P1属于子类继承父类,应位于P1的子目录中

搜狗截图_2012-10-29_00-18-04.png (5.05 KB, 下载次数: 26)

搜狗截图_2012-10-29_00-18-04.png

作者: 赫骏    时间: 2012-10-29 01:04
选择D , 因为P2不能够找到P1,用public,private等限定一下就可以了 p2.afancymethod();p2找不到这个方法
作者: 林志进    时间: 2012-10-29 01:10
看JDK的版本了,1.4之前是可以编译的。官方给出的说明:
The compiler now rejects import statements that import a type from the unnamed namespace. Previous versions of the compiler would accept such import declarations, even though they were arguably not allowed by the language (because the type name appearing in the import clause is not in scope). The specification is being clarified to state clearly that you cannot have a simple name in an import statement, nor can you import from the unnamed namespace.
作者: 张其辉    时间: 2012-10-29 01:30
我试了下,结果是A




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2