博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中包容易出现的错误及权限问题
阅读量:6292 次
发布时间:2019-06-22

本文共 2547 字,大约阅读时间需要 8 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
3,权限在不同地方的体现:
                
public   protected       default     private
同一类中:       ok       ok            ok         ok
同一包中:       ok       ok               ok
子类中:         ok       ok     
不同包中:       ok
 
在同一包中子类中是可以访问父类中默认权限(default)的方法,但是在不同包中不行!
在不同包中如果子类继承了父类,那么子类就可以访问父类中的protected方法!
*/
 
 
//import mytest.*;
/*
package mytest;
public class DemoA{
    
public void show(){
       
new Demo().show();
    
}
}
 
class Demo{
    
void show(){
       
System.out.println("DemoA 中 Demo show!");
    
}
}
*/
 
/*
package mytestone;
import mytest.*;
public class DemoAChild extends DemoA{
     
public void show(){
         
super.show();
         
System.out.println("DemoAChild show!");
     
}
}
*/
 
public 
class 
Test{
   
public 
static 
void 
main(String[] args){
        
//DemoA在mytest包中,将show方法protected之后就会挂掉
        
//mytest.DemoA x = new mytest.DemoA();
        
//x.show();
         
        
// DemoAChild 继承了 DemoA, 该show方法也是protected权限,但是没有放在包中。正常运行!
        
//DemoAChild xx = new DemoAChild();
        
//xx.show();
         
        
//DemoAChild 继承了 DemoA,并放在包中, 该show方法必须是public权限才正常运行!
        
mytestone.DemoAChild xx = 
new 
mytestone.DemoAChild();
        
xx.show();
   
}
}
 
/*
错误1:
Test.java:4: 错误: 无法访问DemoA
        
DemoA x = new DemoA();
        
^
  
错误的类文件: .\DemoA.class
    
类文件包含错误的类: mytest.DemoA
    
请删除该文件或确保该文件位于正确的类路径子目录中。
1 个错误
 
原因:DemoA这个类是属于包mytest体系的,没有放在正确的子路径下!之前的编译为:javac DemoA.java
处理:删掉编译产生的.class文件, 重新编译 javac -d . DemoA.java(让系统自动生成包的子目录);
 
——----------------------------------------------------------
错误2:
Test.java:4: 错误: 无法访问DemoA
        
DemoA x = new DemoA();
        
^
  
错误的源文件: .\DemoA.java
    
文件不包含类DemoA
    
请删除该文件或确保该文件位于正确的源路径子目录中。
1 个错误
 
原因:源文件和自定义的包在同一子目录下!
处理:请删除该文件或确保该文件位于正确的源路径子目录中。或者明确 DemoA的所属包,即 mytest.DemoA
 
--------------------------------------------------------------
错误3:
Test.java:4: 错误: 找不到符号
        
DemoA x = new DemoA();
                      
^
  
符号:   类 DemoA
  
位置: 类 Test
2 个错误
 
原因:类名错误。
处理:因为DemoA已经有包所属,必须明确其包名。所以应为 包名.DemoA 即 mytest.DemoA
      
或者 import mytest.*; 导入包中的类
--------------------------------------------------------------
错误4:
Test.java:4: 错误: DemoA在mytest中不是公共的; 无法从外部程序包中对其进行访问
        
mytest.DemoA x = new mytest.DemoA();
              
^
原因:包与包之间的访问权限必须是public的! 否则 其他的三个(protected default private)权限都是将类封装在包内!
处理:那就加上public白!
 
---------------------------------------------------------------
错误5:
Test.java:5: 错误: show()在DemoA中不是公共的; 无法从外部程序包中对其进行访问
        
x.show();
         
^
1 个错误
原因:包中的类是对外公有的,所以该类的成员方法如果在其他包中的类中使用必须也将权限定义为公有!
处理:再加上public白!
 
 
*/
本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3871941.html,如需转载请自行联系原作者
你可能感兴趣的文章
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>
26.Azure备份服务器(下)
查看>>
mybatis学习
查看>>