(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个文件都不能编译
求详细解析
//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.在P2第一行,编个 :import MyPackage.P1;
2.修改P1类权限
public class P1
public void afancymethod()就可以了,结果是:What a fancy method
分析:(1)P1类在MyPackage包下,P2类在默认包下,两个类不再同一包下,在P2类中继承P1,而P2中并没有引入MyPackage包下的P1类,编译出错。
(2)P1类是没有声明称public访问权限,默认是protected访问权限;即使在P2类中引入P1类,没发现不了,只能被同一包中的类访问。Thank you in advance for giving me credits。
分析:(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。