(6) 下面2个文件位于相同目录下,编译运行后会出现的情况是()。B
//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个文件P1编译成功,P2编译时报错误
 C、2个文件都可以编译,P2运行时报错误
 D、2个文件都不能编译
求详细解析

解决方案 »

  1.   

    B,同一个目录,但不在同一个包里面,所以P2编译的时候找不到p1,导致编译出错..
      

  2.   

    void afancymethod()你这方法不加修饰符的话 是一种默认的访问修饰符 ,只能在一个包下面访问,所以你p1 p2不在同一个包下面 是不能访问的
      

  3.   

    刚刚回答了,怎么题目一模一样?而且还不是同一个人?我在回答一下吧~P1是完成编译通过的。但是P2在继承P1是就会出现问题了,明显编译不通过修改
    1.在P2第一行,编个 :import MyPackage.P1;
    2.修改P1类权限
    public class P1
    public void afancymethod()就可以了,结果是:What a fancy method
      

  4.   

    选B、2个文件P1编译成功,P2编译时报错误。
    分析:(1)P1类在MyPackage包下,P2类在默认包下,两个类不再同一包下,在P2类中继承P1,而P2中并没有引入MyPackage包下的P1类,编译出错。
    (2)P1类是没有声明称public访问权限,默认是protected访问权限;即使在P2类中引入P1类,没发现不了,只能被同一包中的类访问。Thank you in advance for giving me credits。
      

  5.   

    选B、2个文件P1编译成功,P2编译时报错误。
    分析:(1)P1类在MyPackage包下,P2类在默认包下,两个类不再同一包下,在P2类中继承P1,而P2中并没有引入MyPackage包下的P1类,编译出错。
    (2)P1类是没有声明称public访问权限,默认是protected访问权限;即使在P2类中引入P1类,没发现不了,只能被同一包中的类访问。Thank you in advance for giving me credits。
      

  6.   

     
    默认是default 。不是protected。