
【安卓学习笔记】JAVA基础lesson11-包和访问权限
类一旦打包之后,类名就会发生改变,类名改变为: “包名”+“.”+“类名” 以上述代码生成的类为例:所生成的类为urien.Lesson11A.class,所以如果要直接调用的 需要时使用命令: java urien.Lesson11A 执行结果如下
如上图,先把路径定位到包名的文件家里面,在这个文件夹的确能看到Lesson11A的类文件,但是直接用java执行是通不过的,这就验证了上述的说法; 包名的命名规范:
发布日期:2021-05-07 20:17:08
浏览次数:25
分类:精选文章
本文共 3240 字,大约阅读时间需要 10 分钟。
关键字package及其使用方法
package关键字可以将一个类放在一个包里面。使用的方法是package+包名 如package urien;class Lesson11A{ void Lesson11A(){ System.out.println("this is Lesson11A"); } public static void main(String args []){ System.out.println("this is the main func"); }}在编译上与之前的方法有点区别。 没有包的情况下:javac xxx.java 有包的情况下: javac -d (路径) xxx.java 一个个词的来解释: javac:java文件编译的命令 -d:根据包名来生成文件夹名 (路径):这个参数代表的在哪个目录下生成名字为包名的文件夹,只要是计算机里合法的路径都是可以的,还有就是用英文输入法的'.',这个代表在当前目录 xxx.java :这个不用多说,当然是只编译哪个java文件了 如果在命令后面加上了这个参数,在编译完成之后时候,所生成的类就会放在一个包名的文件夹里面; 如上述代码,生成的类会放在urien文件夹下,这个文件夹是编译器自动生成的。 编译后如下图所示:
D:\Android\src>java urien.Lesson11Athis is the main funcD:\Android\src>在这里需要注意的是,这里包名变化并不是简单的类的路径变了,可以通过以下方式测试出来:
1.包名的字母一般都是小写 2.报名一般情况下是域名倒写(如域名是:ABC.com,则报名就是com.ABC)3.包名如果含有".",那么就会生成子目录。
如包名com.ABC,则生成的类文件存储在com文件夹里面的ABC文件夹里。有多少个“.”,就有多少级目录,以此类推。
/*********************************************华丽分割线**********************************************/ 访问权限主要分有:1.公共权限 public 2.私有权限 private 3.默认权限(包级别) default 4.受保护权限 protectedpublic :可以修饰类,成员变量和成员函数 public在修饰类的时候需要注意: 语法规定public所修饰的类的类名需要跟类所在的java文件名保持一致,如果没有则在编译的时候就会报错; public所修饰的类的好处是在于:不在一个包的另一个类如果可以直接通过报名调用公共类; 如:
package urienA;public class Lesson11A{ public String str; public int num; public void func(){ System.out.println("this is Lesson11A"); }}package urienB;class Lesson11B{ urienA.Lesson11A A = new urienA.Lesson11A();}同样的,对于成员变量和成员函数也是一样的,如果有两个类,一个类想访问另一个类的成员变量和成员年函数,不在一个包,是没有权限访问的。 换一种说法:在不不同的包中,一个类想要访问另一个类的话,要求被访问的类有public权限,要想访问成员变量和成员函数时,也需要成员变来那个和成员函数有public权限。 private权限: 使用方法同public一样 在变量和函数前加private关键字修饰非特殊情况下只能修饰成员变量和成员函数;被private关键字修饰过的成员变量和成员函数,只能在当前的类中使用,在类的外部不论包是否相同都无法使用。 default权限: 使用default权限修饰,无需加任何关键字修饰,在相同的包当中可以任意访问,不在一个包内无法访问; protected权限: 拥有和default一样公能,但是protected只能修饰变量和函数。同时如果在父类里面用protected修饰的变量和函数,是允许继承的子类跨包使用的。 这里再特记一下: 如果有以下类:
public class Lesson11A{ public String str; protected int num; public void func(){ System.out.println("this is Lesson11A"); } }这里有 public String str; protected int num; 两个成员变量。其中str是public类型,num是protected类型,这两个在权限上的区别是public是公共的,其他的类只要访问了这个类,这个变量就可以使用;protected修饰的成员变量和函数只有继承的子类才能访问; /*********************************************华丽分割线**********************************************/ 包的导入 如:
package urienA;public class Lesson11A{ public String str; public int num; public void func(){ System.out.println("this is Lesson11A"); } }package urienB;class Lesson11B{ urienA.Lesson11A A = new urienA.Lesson11A();}
在包urienA和urienB中的两个类Lesson11A和Lesson11B,在Lesson11A是公共类的前提下,如果类Lesson11B想要访问类Lesson11A除了使用
urienA.Lesson11A A = new urienA.Lesson11A();//包名加类名的方法
还可以使用包的导入方法:
package urienB;import urienA.Lesson11Aclass Lesson11B{ Lesson11A A = new Lesson11A();}这里的import urienA.Lesson11A就是奖包urienA中的Lesson11A导入的意思; 当然也可以使用多条import1️以导入不同的类,再有就是一个更简单的方法,用 import urienA.* 可以把包urienA里面的类都导入进来;导入进来后就可以不用写包名,直接写类名就可以了 访问权限与继承 在类的继承关系中也同样遵从以上规则; 子类和父类如果不在同一个包当中,首先父类必须公共的才能跨包被继承,同时,父类里面拥有的成员变量和成员函数如果需要被子类继承,也是需要被修成成public公共才能使用的; 如果父类的变量和函数定义成了private(私有)的,子类也是无法使用的。 总结:
在编写代码的时候最好是把成员变量和成员函数的权限定义到最小,这样才能体现出来面向对象的封装性;
By Urien 2017年8月31日 21:27:13
发表评论
最新留言
很好
[***.229.124.182]2025年04月06日 23时51分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
375. Guess Number Higher or Lower II
2021-05-09
650. 2 Keys Keyboard
2021-05-09
764. Largest Plus Sign
2021-05-09
214. Shortest Palindrome
2021-05-09
916. Word Subsets
2021-05-09
869. Reordered Power of 2
2021-05-09
1086 Tree Traversals Again
2021-05-09
1127 ZigZagging on a Tree
2021-05-09
1062 Talent and Virtue
2021-05-09
1045 Favorite Color Stripe
2021-05-09
B. Spreadsheets(进制转换,数学)
2021-05-09
等和的分隔子集(DP)
2021-05-09
基础练习 十六进制转八进制(模拟)
2021-05-09
L - Large Division (大数, 同余)
2021-05-09
39. Combination Sum
2021-05-09
41. First Missing Positive
2021-05-09
80. Remove Duplicates from Sorted Array II
2021-05-09
83. Remove Duplicates from Sorted List
2021-05-09
410. Split Array Largest Sum
2021-05-09
开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?
2021-05-09