java常用修饰符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//本次对java修饰符的探讨主要是用myeclipse开发工具来进行。
Java主要修饰符分析
(武汉理工大学软件1004某某人)
一、访问类修饰符(public、private、protected、friendly/default、 private protected )
1.访问修饰符修饰类
(1)不能用private、protected修饰类,否则会出现编译错误,
如下图:
(2)用friendly/default修饰类(不加修饰符默认为friendly类),也就是友好类,必须要跟引用自己的另一个类在同一个包,如下图:
若在同一包,编译运行无错误。若不在同一包,则会出错,如下图:
(3)用public修饰类,无论在哪个包都能被使用,如上图所示。但是,在一个xxx.java文件里最多只有一个public class,
上图中没有引用类Test5_1,运行结果正确,但是程序中却会提醒错误,并且Test_5_1就没用了。再看下图:
上图中,程序引用了类Test5_1,于是出错了。因此,一个java文件里面最多只能有一个public class。
2.访问修饰符修饰成员变量和方法
(1).
上图是四种访问修饰符访问控制权限,下面以程序来验证其正确性(只讨论成员变量):
类Test_6和类Test_6_1在包.one里,
将同包的类使用私有成员的语句注释掉,运行结果无错误,如下图:
将注释去掉后编译运行,出现错误,如下图:
而类Test_7和类Test_7_1在包o里,
如上图将某些语句注释掉,运行结果无错误,如下图:
将前两个注释去掉后编译运行,出现错误,如下图:
将后三个注释去掉后编译运行,出现错误,如下图:
因此,验证结果正确。
(2).用private protected(私有保护访问修饰符)修饰成员变量:
用此修饰符修饰的成员变量只可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类。把同一包的非子类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,而不是松散地组合在一起的包。
以上是找资料查到的,但是在操作时却发现了错误!!!根本不能用private protected修饰成员变量,如下图:
二、非访问修饰符(final、abstract、static、native)
1.final修饰符:
(1)用final修饰类
被final修饰的类叫做最终类,(并且里面的方法必须都是final方法,这个后面再作讨论),此类不能被继承。通常一些系统类或者一些有固定作用、用来完成某种标准功能的类都是要用final 来修饰,这样可以避免被子类修改到重要的数据而导致严重的错误。戏称“断子绝孙类”。如Java系统定义好的常见的String类、用来实现网络功能的InterAddress、Socket等类都是final类。
下面来验证一下:
首先图1的程序定义了一个final类,但没有继承它,运行结果正确。
图2的程序也定义了一个fanal类,但被另一个类继承它了,编译就会出现错误。
(2)用final修饰方法:
用final修饰的类方法叫做最终方法,此方法能被继承,但不能被覆盖,最终方法的功能和内部语句都不能再更改。
(所有已被private修饰符限定为私有方法,以及所有包含在final类中的方法,都被缺省地认为是final的。)
下图为验证结果:
(3)用final修饰变量:
用final修饰的变量即为常量,通过类的对象来使用;而若用static final修饰,该变量也为常量,可由类名直接访问。
如下图:
(注意:常量不能修改!)
2.abstract修饰符(不能修饰变量):
(1)用abstract修饰类:
凡是用abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。
抽象类是一种经过优化的概念组织方式:把共同特点抽象出来;其后在描述和处理某一种具体对象时,就只需描述不同的特殊之处。这种组织方式使得所有的概念层次分明,简洁洗练,非常符合人们日常的思维习惯。
由于抽象类时它的所有子类的公共属性的集合,所以使用抽象类的一个优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。
抽象类不能被final修饰,很显然,一个需要继承才能起作用,一个是禁止继承的,所以它们不能同时修饰一个类。
抽象类不能直接定义对象,如图示:
(2)用abstract修饰方法:
用abstract修饰的方法叫做抽象方法,抽象方法是一种只有方法头,而没有方法体的和操作实现的方法。使用抽象方法的目的是使所有的子类,对外都呈现一个相同的名字的方法,是一个统一的接口。所有的抽象方法,必须存在于抽象类之中。
此外,抽象方法不能被private或static所修饰,因为抽象方法是子类应覆盖的方法,如果方法被定义为私有的话,就不能访问了。而static方法在不创建对象时也可以以“类.方法名();”的形式被调用,所以其方法体是必须已被定义的。由于抽象方法没有方法体,所以不能被static所修饰。
以下来验证:
不能修饰变量:
抽象方法不能有方法体(有了也没用,会有错误提示):
抽象方法必须存在抽象类:
正确格式与引用:
3.static修饰符:
(1)用static修饰变量/方法:
用static修饰的变量/方法叫做静态变量/方法;它能通过对象进行访问,也能通过成员函数进行访问,同时能直接通过类名访问,它是所有对象共有的变量/方法。如下图: