Java中的访问控制public,private,protected,package

1. Java中的访问控制html

可见/访问性 在同一类中 同一包中 不一样包中  同一包子类中  不一样包子类中 
 public  yes  yes  yes  yes  yes
 protected   yes  yes  no  yes  yes
 package   yes  yes  no  yes  no
 private  yes  no  no  no  no

表1-1java

(1) 在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即若是在类、变量等前没加显示的可见性修饰符,那它就是package级别的。若是在类的定义中没有指定package,那么java会把它放在缺省包中,通常来讲这个缺省的包就是当前目录。
(2) 在子类中的方法若是重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。
(3) 在java中,通常来讲,变量成员最好是private,对它们的访问能够经过public的方法,在这些方法中能够作些控制以保证数据的一致性。这些方法名通常以get和set作为前缀。node

2. 包
包名通常为小写,而类名的第一个字母通常为大写,这样在引用时,能够明显的分辨出包名和类名。若是在类的定义以前没有使用package定义包名,那么该类就属于缺省的包。性能

2.1 Hello Package
首先经过一个简单的package的定义来学习package的使用:学习

package testPackage;
public class Test
{
 public static void main(String args[])
 {
  mNode node = new mNode();
  node.print("hello");
 }
}

 

说明:
(1) 使用package关键字指明类所在的包;
(2) package语句必须在文件的最前面;
(3) 编译时可以使用javac –d . Test.java自动产生包须要目录;
(4) 可使用java testPackage.Test来执行编译后的代码;
2.2 包的几个做用:
(1) 能够更好的组织类,包与文件夹相似,文件夹能够将不一样的文件放在同一个文件夹中,而包也能够将不一样的类文件放在同一包中;
(2) 减小类名的冲突问题,这也与文件夹相似,同一文件夹中的文件不能重名,不一样文件中的文件能够重名,同一包中的类名不能重复,不一样包中的类名能够重复;
(3) 对包中的类起了必定的保护做用,详见java的访问控制;
2.3 import的使用
(1) 直接引用指定的类,如import java.util.Vector;
(2) 引用一个包中的多个类,如import java.awt.*。更确切的说,它并非引用java.awt中的全部类,而只引用定义为public的类,而且只引用被代码引用的类,因此这种引用方法并不会下降程序的性能;
(3) *号代替类名,在不能代替包名,如import java.awt.*,只引用java.awt下的类,而不引用java.awt下的包;
(4) import java.awt.F*,这种使用方法是错误的;
(5) import语句在全部类定义以前,在package定义以后;
(6) import只告诉编译器及解释器哪里能够找到类、变量、方法的定义,而并无将这些定义引入代码中;
2.4 包中类的使用
有如下几种机制可使用包中的类:
(1) 若是要使用的类是属于java.lang包的,那么能够直接使用类名来引用指定的类,而不须要加上包名,由于包java.lang不用显示使用import,它是缺省引入的;
(2) 若是要使用的类在其它包(java.lang除外)中,那么能够经过包名加上类名来引用该类,如java.awt.Font
(3) 对于常常要使用的类(该类在其它包中),那么最好使用import引用指定的包,如java.awt.*
(4) 若是import引入的不一样的包中包含有相同的类名,那么这些类的使用必须加上包名
(5) 接口也能够属于某个包,也可使用import引入其它包中的类和接口spa

 

原文地址:Java中的访问控制public,private,protected,package做者:一根筷子code

相关文章
相关标签/搜索