《访问控制属性》PPT课件.ppt
《《访问控制属性》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《访问控制属性》PPT课件.ppt(44页珍藏版)》请在三一办公上搜索。
1、包是一组类的集合一个包可以包含若干个类文件,还可包含若干个包包的作用将相关的源代码文件组织在一起类名的空间管理,利用包来划分名字空间,便可以避免类名冲突提供包一级的封装及存取权限,类的组织包的概念,包的命名每个包的名称必须是“独一无二”的Java中包名使用小写字母表示命名方式建议将机构的Internet域名反序,作为包名的前导若包名中有任何不可用于标识符的字符,用下划线替代若包名中的任何部分与关键字冲突,后缀下划线若包名中的任何部分以数字或其他不能用作标识符起始的字符开头,前缀下划线,编译单元与类空间一个Java源代码文件称为一个编译单元,由三部分组成所属包的声明(省略,则属于默认包)Impo
2、rt(引入)包的声明,用于导入外部的类类和接口的声明一个编译单元中只能有一个public类,该类名与文件名相同,编译单元中的其他类往往是public类的辅助类,经过编译,每个类都会产一个class文件利用包来划分名字空间,便可以避免类名冲突,包的声明命名的包(Named Packages)例如:package Mypackage;默认包(未命名的包)不含有包声明的编译单元是默认包的一部分,包与目录Java使用文件系统来存储包和类包名就是文件夹名,即目录名目录名并不一定是包名用javac编译源程序时,如遇到当前目录(包)中没有声明的类,就会以环境变量classpath为相对查找路径,按照包名的结
3、构来查找。因此,要指定搜寻包的路径,需设置环境变量classpath,引入包 为了使用其它包中所提供的类,需要使用import语句引入所需要的类Java编译器为所有程序自动引入包java.langimport语句的格式 import package1.package2.(classname|*);其中package1.package2表明包的层次,它对应于文件目录classname则指明所要引入的类名如果要引入一个包中的所有类,则可以使用星号(*)来代替类名,访问属性,我们定义的每一个类,以及其中的每一个成员属性和成员方法都存在是否可以被他人访问的访问属性。不同的访问属性,标识着不同的可访问性
4、。所谓可访问性是一种在编译时确定的静态特性。在Java语言中,也正是利用访问属性机制实现数据隐藏,限制用户对类及类中成员的访问权限。,类成员的访问权限控制,Java推出了“访问控制修饰符”的概念,允许类创建者声明哪些东西是类使用者可以使用的,哪些是不可以使用的。这些访问控制的级别在“最大访问”到“最小访问”范围之间,分别包括:public、defaut(无修饰符)、protected、private。,为类、类中的成员属性和成员方法指定访问属性的格式为:public class ClassName;public|private|protected memberVariableName;publ
5、ic|private|protected emberMethodName(parameterList);由于除默认访问属性外,指定其他三种访问属性需要写在定义之前,所以,又将它们称为修饰符,默认访问属性又称为friendly(友好)。,公共访问控制修饰符public,为Java中的类加入访问控制修饰符只能是public,即公共类。一个类被声明为公共类,表明它可以被所有的其它类访问和引用,这里的访问和引用是指这个类作为整体是可见的和可使用的,程序的其它部分可以创建这个类的对象、访问这个类内部可见的成员属性和成员方法。,一个类作为整体对于程序的其它部分可见,并不能代表类内的所有属性和方法也同时对程
6、序的其它部分可见,前者是后者的必要条件,类内属性和方法能否被访问,还要看这些属性和方法自己的访问控制修饰符。另外,将实例属性的访问控制修饰应用public是一种糟糕的设计!破坏了封装性,缺省访问控制修饰符,假如没有为类添加访问控制修饰符,说明它具有缺省的访问特性。这种缺省的访问控制权规定,该类只能被同一个包中的类访问和引用,而不可以被其它包中的类使用,这种访问特性称为包访问性。通过声明类的访问控制权限,可以使整个程序结构清晰、严谨、减少可能产生的类间干扰和错误。,数据隐藏是面向对象的程序设计倡导的设计思想。将数据与其操作封装在一起,并将数据的组织隐藏起来,利用成员方法作为对外的操作接口,这样不
7、但可以提高程序的安全性、可靠性,还有益于日后的维护、扩展和重用。将类中的数据成员设置为private访问属性是实现数据隐藏机制的最佳方式。private访问属性可以应用于类中的成员,包括成员属性、成员方法和内部类或内部接口。,私有访问控制修饰符,私有访问控制修饰符,用private修饰的属性和方法,只能被该类自身访问和修改,而不能被任何其它类,包括该类的子类,获取或引用。1、对私有数据访问的方法例如有二个实例字段,它们被声明在student类中:private String nane;private int age;private关键字用来确保这些实例属性只能被本类中的方法使用。2、私有方法的
8、访问考虑到封装性,一般类中的属性都是私有。对于方法又是怎样的?虽然类中大多数方法都是公开的,但是私有方法也是经常使用的。在下面的情况下可以考虑使用私有方法:与类的使用者无关的那些方法。如果类的实现改变了,不容易维护的那些方法。,package test1;public class Student private String name;public Student(String n)name=n;public String getName()return name;,package test2;import test.Student;public class test public stati
9、c void main(String args)Student stu=new Student(zhang san);/System.out.println(stu.name);System.out.println(stu.getName();,例1 不同包之间的类访问,如果将一个成员属性或成员方法定义为public类型,则在同一类、子类、同一包中的类、不同的包中的类均可以访问该成员变量或成员方法。/Demopub1.javapackage pub1;public class Demopub1/public修饰是必需的。/公共类型的成员变量 public int a;/公共类型的成员方法pub
10、lic void method()();,/Demopub2.javapackage pub2;import pub1.*;class Demopub2public static void main(String args)/实例化aDemo1Demopub1 aDemo1=new Demopub1();/访问aDemo1中的公共成员方法aDemo1.method();/访问aDemo1中的公共成员变量aDemo1.a=10;int a=aDemo1.a;System.out.println(aDemo1中的公共成员变量a的值:+a);Demo1中的公共成员变量a的值:10 上面定义的两个类D
11、emopub1和Demopub2处于不同包内,因此,Demopub1必须修饰为public类,否则在Demopub2中是不能访问的。按照公共类型的成员属性的访问条件,位于不同包中的类仍然可以访问公共类型的成员属性。,例2 私有类型属性的访问,如果一个成员属性或成员方法声明为私有类型,则该属性或方法只能在同一类中被访问。/DemoPrivate.javapublic class DemoPrivatepublic int a;/公共类型的成员变量 private int b;/私有类型的成员变量 public int getA()/公共类型的成员方法return a;private int ge
12、tB()/私有类型的成员方法 return b;public DemoPrivate(int a,int b)/构造方法this.a=a;this.b=b;,public static void main(String args)DemoPrivate aDemoPrivate=new DemoPrivate(1,2);/访问公共类型的成员方法int a=aDemoPrivate.getA();(变量a的值:+a);/访问私有类型的成员方法 int b=aDemoPrivate.getB();(变量b的值:+b);上面程序的输出结果为:变量a的值:1 变量b的值:2 由上面的程序可以看出,尽管
13、成员属性和成员方法定义为私有类型。但由于处于同一类中,仍然能够对成员属性和成员方法进行访问。如果在另一类中,则访问受到限制(请同学们自己实验)。,保护访问控制修饰符,用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其它包中的该类的子类。使用protected修饰符的主要作用是允许其它包中的该类的子类来访问父类中的特定属性。,protected关键字为我们引入了一种名为“继承”的概念,定义新类时,以现有的类为基础,并在其中加入新的成员,同时不会对现有的类产生影响我们将这种现有的类称为“基础类”或“基本类”(Base class),对于从现有类继承后而产
14、生的新类,我们称其扩展了现有类。,例3:不同包中公共类中protected修饰的方法的访问,如果声明一个成员属性或成员方法的访问类型为protected,则该成员属性或成员方法只能够被该类内部、子类和相同包中的类访问./Demopro3.Javapackage pro3;public class Demopro3/公共类型的成员变量 public int a;/保护类型的成员方法protected void method()();,/Demopro4.Javapackage pro4;import pro3.*;public class Demopro4public static void m
15、ain(String args)Demopro3 aDemo1=new Demopro3();/实例化Demo1/不能访问Demopro3中的保护类型成员方法/原因是该方法是protected类型/aDemo1.method();/可以访问Demopro3中的公共成员变量aDemo1.a=10;int a=aDemo1.a;System.out.println(Demopro3中的公共成员变量a的值:+a);如果上面的两个程序处在相同的包中,Demopro4.java中的aDem01.method()访问语句就会有效。如果两个程序位于不同的包中,则保护类型的成员变量或成员方法的访问受到限制。因
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 访问控制属性 访问 控制 属性 PPT 课件
链接地址:https://www.31ppt.com/p-5605532.html