很重要的java题目
(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个文件都不能编译
求详细解析 --------------------编程问答-------------------- B,同一个目录,但不在同一个包里面,所以P2编译的时候找不到p1,导致编译出错.. --------------------编程问答-------------------- void afancymethod()你这方法不加修饰符的话 是一种默认的访问修饰符 ,只能在一个包下面访问,所以你p1 p2不在同一个包下面 是不能访问的 --------------------编程问答-------------------- B~~~~~~~~~~~~~~`` --------------------编程问答-------------------- 刚刚回答了,怎么题目一模一样?而且还不是同一个人?我在回答一下吧~
P1是完成编译通过的。但是P2在继承P1是就会出现问题了,明显编译不通过。。。
修改
1.在P2第一行,编个 :import MyPackage.P1;
2.修改P1类权限
public class P1
public void afancymethod()
就可以了,结果是:What a fancy method --------------------编程问答-------------------- 选选选选选 B --------------------编程问答--------------------
+1. --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 楼上正解 --------------------编程问答-------------------- 其实就是在P2继承P1的时候,由于不在同一个包下面,而访问受限,所以只要在楼上是正解。。。 --------------------编程问答-------------------- gaoshouruyu高手如云啊
--------------------编程问答-------------------- 选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。 --------------------编程问答-------------------- 选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。 --------------------编程问答--------------------
默认是default 。不是protected。
补充:Java , Java SE