java访问权限修饰符

上传人:jin****ng 文档编号:164937820 上传时间:2022-10-26 格式:DOCX 页数:6 大小:15.30KB
收藏 版权申诉 举报 下载
java访问权限修饰符_第1页
第1页 / 共6页
java访问权限修饰符_第2页
第2页 / 共6页
java访问权限修饰符_第3页
第3页 / 共6页
资源描述:

《java访问权限修饰符》由会员分享,可在线阅读,更多相关《java访问权限修饰符(6页珍藏版)》请在装配图网上搜索。

1、java 访问权限修饰符 public protected defaultprivate 用法总结首先声明:java中,default这个修饰符并没有显式的声明,在成员变量和方法前什么修饰 符也不用,默认的就是default。为了条理清晰,分三种不同情况来总结。一 访问权限修饰符修饰成员变量和方法 public :表明该成员变量和方法是共有的,能在任何情况下被访问。protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了) eg:class Aprotected int weight;protected int f( int a,int b )/ 方法体假设 B 与 A

2、在同一个包中,则class Bvoid g() A a=new A();A.weight=100; 合法A.f(3,4);/合法 特别说明:什么是在同一个包中? 答:用 package 打包在一起的 class ,叫在同一个包中。 (不明白,举个例子)eg:在JDK的srcjavaio中,你会看到许多java类,第一句源代码都是package java.io; 没有使用 package 打包的,在同一目录下的类也会被视做同一个包。default:在这种情况下中,同protectedo区别在第二和第三种情况中。eg: class Aint weight ;int f( int a,int b )

3、/ 方法体假设 B 与 A 在同一个包中,则class Bvoid g()A a=new A();A.weight=100; 合法A.f(3,4);/合法private: 只能在本类中访问。eg: class Testprivate int money;Test()money=2000;private int getMoney()return money;public static void main(String args)Test te=new Test();te.money=3000;/合法int m=te.getMoney();/合法System.out.println(money=+

4、m);PS:实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现 了 OOP 的封装特性,是 OOP 安全性的体现。二 访问权限修饰符修饰类1,不能用 protected 和 private 修饰类。2,用default修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同 一包中。三 访问权限修饰符与继承 这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:1,子类与父类在同一包中此时只有声明为 private 的变量与方法不能被继承(访问)。eg:class Fatherprivate int money ;int weight=10

5、0;class Son extends Fatherviod f()money=10000;/ 非法 weight=100; / 合法2,子类与父类不在同一包中此时 private 与 default 均不能被继承(访问), protected 与 public 可以 eg:Father.javapackage com.aaapublic class Fatherint height ;protected int money=120;public int weight;protected int getMoney()return money;void setMoney(int newMoney

6、)money=newMoney;Son.javapackage com.bbbimport com.aaa.Father;public class Son extends Fathervoid f()mon ey=1OOOO; 合法height=170;非法,height 为 default 修饰的变量System.out.println(money);/ 输出结果是 10000 /setMoney(300);/非法int number=getMoney(); /合法 System.out.println(number);/ 输出结果是 10000 public static void mai

7、n(String args)Son sss=new Son();sss.f();所以,访问权限修饰符权限从高到低排列是 public ,protected ,default, privateJava 中的 abstract,static,final 修饰符abstract 修饰符abstract 使用对象:类、接口、方法 介绍:类中包括没有实现的方法,不能被实例化。如果是一个 abstract 方法,则方法体 为空,该方法的实现在子类中被定义,并且包含一个 abstract 方法的类必须是一个 abstract 类abstract 修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法

8、声明中使 用 abstract 修饰符,表明该方法是一个抽象方法,它需要在子类实现。在下面的情况下,类必须是抽象类:1. 类中包含一个明确声明的抽象方法 ;2.类的任何一个父类包含一个没有实现的抽象方法 ;3. 类的直接父接口声明或者继承了一个抽象方法,并且该类没有声明或者实现该抽象方法。 如下例所示:abstract class A1public int v1; abstract void test();abstract class A2 extends A1 public int v2;class Sample extends A2void test() 因为包含一个抽象方法test,类A

9、l必须被声明为抽象类。它的子类A2继承了抽象方法test, 但没有实现它,所以它也必须声明为抽象类。然而,A2的子类Sample因为实现了 test,所以它 不必声明为抽象的。如果试图创建一个抽象类的实例就会产生编译错误; 如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误; 构造函数和静态函数以及 Final 修饰的函数不能使用 abstract 修饰符;接口缺省为 abstract。Static 修饰符static 使用对象:类、方法、变量、初始化函数 通常,在创建类的实例时,每个实例都会创建自己实例变量。但是在变量的声明中可以使 用 Static 修饰符,它表明该成员变量属于类本身

10、,独立于类产生的任何对象。这种成员变量称为静态变量(静态属性)。方法的声明中也可以使用static修饰符,表明该方法从属于类本身。 静态属性和静态方法不需要创建实例就可以使用。典型的例子是java.lang包中的System类中的方法和变量。我们常用System.out.println(“message”);输出信息,并没有创建System的实例,是因为printin方法声明为System类的静态方法, 它不需创建实例就可以使用。下面的例子会帮助你更深刻的理解Static修饰符。注意各个代码块的加载次序。class Samplestatic int s1=3;static int s2;sta

11、tic void display()System.out.println(s1=+s1);System.out.println(s2=+s2);staticSystem.out.println(static block);s2=s1+1;public static void main(String args)Sample.display();一旦这个类被调用,所有的静态变量都被初始化, s1 被赋为 3,然后运行 static 块,这将 打印出一段消息,并且把s2赋为sl+1,即4。然后解释器调用main成员函数,它调用了成员函 数display,该函数输出si和s2的信息。运行结果如下:C:

12、java Samplestatic blocks1=3s2=4通过上面的例子还可以看出,一个静态成员函数可以通过它所属的类名来调用。在静态成员函数中只能直接调用其它的静态成员函数或引用静态属性,否则会造成编译错误。静态成员函数中也不能使用this或者super,因为它们是和类的对象相关联的。final 修饰符final 使用对象:类、方法、变量介绍:被定义成 final 的类不允许出现子类,不能被覆盖,字段值不允许被修改。如果一个类是完全实现的,并且不再需要继承子类,则它可以声明为Final类。如果final 类的名字出现在另一个类声明的ex tends字句的后面就会产生编译错误。这表明fin

13、al类不能有 任何的子类。类不能同时被声明为abstract和final,因为abstract类中的abstract方法永 远没有机会被实现。在缺省情况下,所有的成员函数和实例变量都可以被覆盖。如果你希望你的变量或成员函数 不再被子类覆盖,可以把它们声明为 final。例如:class FinalSamplefinal int MAX_VALUE = 100;public static void main(String args) FinalSample a =new FinalSample();System.out.print(a.MAX_VALUE);表示,MAX_VALUE的值为100,并且不能再更改。final变量用大写标识符是一个一般的约 定。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!