我所说的是public private protected 这类修饰
解决方案 »
- java
- 急 apache mina 的session.write(xxxxx);超时设置!
- hibernate中如何取得一个vo的主键字段
- 关于spring的OpenSessionInViewFilter的连接问题
- DOM4j生成XML文件时可以自动的引用一个xsl文件吗
- 用java运行时出现exception的输入显示
- 做过时时在线的高手请进
- 100分求教:在resin+iis环境下,在resin.conf中如何设置,才能使iis中多个站点都可以运行jsp文件?
- struts,简单的联接问题,急!!!!
- 如家 汉庭 某酒店2000W数据 1.7 GB 泄露数据如何快速查询
- 一个字符串,怎么转换为数组?
- java 权限过滤器如何不过滤某个目录,只有那么点分了,只求高手秒杀
意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已。同一个包内其它类可以访问,但包外
就不可以。对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录
的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件
中,虽然没有引入package,但隶属于相同的default package。
class Sundae{
//以下两个方法缺省为friendly
Sundae(){}
Void f() {System.out.println(“Sundae.f()”);
}
public class IceCream{
public static void main(String[] args){
Sundae x = new Sundae();
x.f();
}
}
对于类来说:同一个包中的类可以用。总之,类只可以声明为public或者friendly。
public:可以供所有的类访问。
默认:默认可以称为friendly但是,java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++。默认的访问权限是包级访问权限。
即如果写了一个类没有写访问权限修饰符,那么就是默认的访问权限,同一个包下的类都可以访问到,即使可以实例化该类
(当然如果这个类不具有实例化的能力除外,比如该类没有提供public的构造函数)。 说明:
1、每个编译单元(类文件)都仅能有一个public class
2、public class的名称(包含大小写)必须和其类文件同名。
3、一个类文件(*.java)中可以不存在public class。
这种形式的存在的场景:如果我们在某个包内撰写一个class,仅仅是为了配合同包内的其他类工作,而且
我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调用这个类的类)看而伤脑筋,而且有可能过一段时间之后
有可能会彻底改变原有的做法,并完全舍弃旧版本,以全新的版本代替。
4、class不可以是private和protected。
5、如果不希望那个任何产生某个class的对象,可以将该类得所有构造函数设置成private。但是即使这样也可以生成该类的对象,就是class的static的成员(属性和方法)可以办到。 2、类成员变量的访问权限:
public:紧接public的属性任何类都可以访问到。可以直接使用ClassName.propertyName。但是从类的封装性上来考虑将一个类的属性定义成public一般很少使用,
在定义静态常量的时候通畅会这样定义。如:public static final int PAGE_SIZE=10;
private:只有类本身内部的方法可以访问类的private属性,当然内部类也可以访问其外部类的private成员的。(属性和方法)
默认(friendly):包级可见,同一个包内的类可以访问到这个属性,可以直接使用className.propertyName来访问,但是从类的封装性特性来说很少这样使用类的属性的。
protected:关键字所处理的是所谓“继承”的观念。对于同一包的其他类,protected=默认,对于不同包的类,如果存在继承关系,而baseClass存在protected属性,则可以被其自继承,而不同包的其他类
则不能访问类的protected属性。
3、类的成员方法的访问权限:
其从语法角度来讲,这些访问权限控制符作用于类的方法和作用于类的属性上的效果是一样的。
public:所有类可见。
pirvate:只有同一类内部的方法可见,在有就是内部类也可以访问到。
默认(friendly):包内可见。
protected:继承可见。 4、访问权限存在的理由
1、“让使用者无法碰触到他们不该碰触的东西。”这些东西仅供类的内部机制使用。将某些成员声明成private,对于使用者来说可以说是一种服务,
因为这样使用者可以知道哪些是他关注的哪些是不重要的,不需要关注,如此历来对于使用来说降低了对使用对象认识的难度。
2、(最终要的理由)让程序设计者可以更动class内部运作方式,而无须担心波及到客户端程序。 5、java的“访问权限修饰符”赋予classes开发者极具有价值的控制能力。身为classes开发者,如果你的任何改变可以完全不干扰你的使用者,
你便可以安心改变你的底层实现,因为客户端程序员无法访问class的这一部分。
通过今天学习访问权限的问题了解到,接口或者抽象等等策略所谓的“实现隐藏”其根本原因并不是说为了隐藏实现的代码和思路,而是降低使用者的使用难度,以及从维护角度来说可见范围的控制给程序维护带来了极大的安全性。
顶!包访问权限 详见THINKING IN JAVA
即:包访问权限
而方法不写访问修饰符是private (只能在本类使用,其他都不行)
如果不写,是默认包内访问,对于类来说,只有两种情况(内部类不说):一个是public,另一个是不写任何访问修饰符,也就是包可见。
而,类的方法,只有在类的前提下,才会起作用。
我建设你去看看SCJP考试试题,很多都很考你的基础知识,我也在看。
PS: SCJP的认证考试挺贵的,我只看,不考