包和访问权限_25

来源:互联网 发布:分级基金交易软件 编辑:程序博客网 时间:2024/05/04 19:06

1.什么是java当中的软件包

2.为什么要使用软件包

3.如何给一个类打包


package tc;class Test{public static void main(String args[]){System.out.println("我是包");}}

将类放置在一个包中,需要使用package "包名",编译时需要使用-d参数


javac -d . Test    命令的解释

-d 根据包名来生成文件夹名

.    生成的文件夹,放的位置(d:\code 放到了d盘 code文件夹)


类名将发生变化  "包名"+"."+“类名”            tc.Test

包名的命名规范:

1.要求包名所有字母小写

2.包名一般情况下,是你的域名倒过来写 com.baidu.user

   (这个时候会先建com文件夹,再建baidu,文件夹)


Java 当中的访问权限:

1.public:公共权限

2.private:私有权限

3.default:包级别访问权限(默认访问权限)

4.protected:受保护权限


当class申明为 public ,则类名一定要和java名一致(Person.java Person.class)

Person.java

package com.baidu;public class Person1{}


package com.baidu;public class Person1{String name;int age;void introduce(){ System.out.println("name");}}

package com.google;class Test{public static void main(String args[]){Person p = null;//申明一个Person的引用,并未调用它的构造函数}}


因为两个class在不同的包里,所以申明Person的时候要带上包名:com.baidu.Person

但也可以导入这个类 import com.baidu.Person;  就不需要再加入包名了。

                                     import com.baidu.*;


public权限的作用:

package com.baidu; class Person{String name;int age;void introduce(){ System.out.println("name");}}

package com.google;class Test{public static void main(String args[]){com.baidu.Person p = null;//申明一个Person的引用,并未调用它的构造函数}}

结果:

原因:Person.java  和  Test.java 分别在两个不同的包内,所以 在Test.java 中调用 Person (Person没有public) 就会出错。调用不同包的类里面的 没有public 的变量、 函数,都会出错(Person.name 出错)。

总结:在不同的包当中,一个类想要访问另外一个类,要求被访问的类拥有public权限,如果想访问这个类的成员变量和成员函数,那么也应该要求这些成员变量和成员函数有也有public权限。


private权限

private只能修饰变量和函数,不能修饰类(除了特殊情况——内部类)
所以只能在当前类中使用,在类的外部统统无法用,不管是否在同一个包里面。


default权限

不写修饰时,就是default,它就是包级别访问权限:如果两个类在同一个包中,可以互相调用,如果在不同的包当中,就不能相互调用了,换成public才行。

前三个总结:

1.public:可以修饰类、成员变量、成员函数,没有任何限制,同一个包当中或者不同包当中的类都可以自由访问。

2.private:可以修饰成员变量、成员函数,只能在本类当中使用。

3.default(不写修饰符,就是default权限)可以修饰类、成员函数、成员变量,在同一个包当中可以自由访问。


protected权限首先拥有和default一样的功能,但是该权限只能修饰成员变量和成员函数,除此之外,还允许跨包的继承。

允许子类和父类在不同的包中,子类可以使用父类protected权限的成员变量和成员函数,就是default 的特例(在父子类关系下可以跨包)

0 0
原创粉丝点击