面向对象——包整理

来源:互联网 发布:python 自动登录签到 编辑:程序博客网 时间:2024/06/01 19:56

在程序中创建某个类的对象(该类在某个包中)

问题1、如果代码如下:DemoAbc d = new DemoA();则编译时会发生以下错误

PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 mypack.PackageDemo
                DemoA d = new DemoA();
                ^
PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 mypack.PackageDemo
                DemoA d = new DemoA();
                              ^
2 错误


原因:类名写错。
因为DemoA类已经有包的所属,所以必须要明确其包名。
记住:DemoA这个名词错的。 正确名称是报名.类名  packa.DemoA
--------------------------------------

问题2、以上问题修改后,编译时如果不写明包的位置会出现以下错误:
PackageDemo.java:8: 软件包 packa 不存在
                packa.DemoA d = new packa.DemoA();
                     ^
PackageDemo.java:8: 软件包 packa 不存在
                packa.DemoA d = new packa.DemoA();

2 错误

原因是在当前目录下没找到,因为packa存放在其他目录下,
应该配置一个classpath。

形式:set classpath 包的路径

问题3、如果类在包中中不是公共的;无法从外部软件包中对其进
行访问

问题4、该类的方法不是公共的

包与包之间的类进行访问,被访问的包中的类必须是public的,被访问的包中的类的方法也必须是public的。(这种情况说的是不同包之间,里面的

类不存在继承关系)

引申:protected这个权限仅给不同包之间的子类可以使用


包与包之间类进行访问权限:

          public protecteddefault  private
同一类中    ok             ok              ok           ok
同一包中    ok             ok              ok           
子类中      ok             ok              
不同包中    ok


包的导入:import  为了简化类名书写

import packa.DemoA;//导入了packa包中的DemoA类

import packa.*;//导入了packa包中所有的类

导包的原则:用到哪个类,就导入哪个类。

0 0
原创粉丝点击