Java中访问权限修饰符public protected 缺省默认 private的用法总结
1、访问权限符:
(1)public:
对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中。
对于类来说: 也是一样。
(2)friendly:
对于成员老说:如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注
意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。
(3)private:
对于对于成员来说:只能在该成员隶属于的类中访问。
class Sundae{
private Sundae(){}//只能在Sundae class中被调用
Sundae(int i) {}
static Sundae makASundae() {
return new Sundae();
}
}
public class IceCream{
public static void main(String[] args){
// Sundae class中构造函数Sundae()是private,
// 所以不能用它进行初始化
//Sundae x = new Sundae();
Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用
Sundae z = Sundae.makASundae();
}
}
对于类来说:类不可以声明为private。
(4)protected:
对于对于成员来说:相同包中的类可以访问(包访问权限);基类通过protected把基类中的成员的访问权限赋予派生类不是所有类(派生类访问权限)。
例子:package c05.local;
import pack1.Cookie;
//注意:在这里ChocolateChip继承了类Cookie,按道理bite()方法也在
//ChocolateChip中,可以用x.bite直接调用,但是不可以的,因为类ChocolateChip
//和Cookie类不在一个包中,各自具有包访问权限,为了能够使用x.bite()必须要把
//Cookie方法的访问权限换成public或者protected,但是一旦换成public所有的人就
//可以访问了,这样达不到隐私的要求,所以设置成protected最好,既可以顺利访问,也可以
//避免外面的类调用,保护好隐私的作用
public class ChocolateChip extends Cookie {
public ChocolateChip() {
System.out.println("ChocolateChip constructor");
}
public static void main(String[] args) {
ChocolateChip x = new ChocolateChip();
x.bite(); // Can't access bite
}
} ///:~
package pack1;
public class Cookie {
public Cookie()
{
System.out.println("Cookie constructor");
}
protected void bite(){System.out.println("bite");}
}
对于类来说:类不可以声明为protected
对于类的权限修饰,下面有更好的解释:
Class类的访问权限:
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的成员(属性和方法)可以办到。
分享到:
相关推荐
父子类可以是不同包 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问
java访问权限修饰符public.doc
计算机二级摸底测验J继承和接口和java访问权限修饰符总结ava题目
本文档介绍了Java中的访问控制权限修饰符。它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同...
经过长时间的学习和经验的积累,我总结出JAVA访问修饰符的全部特性和使用范围,外加使用权限,另外我还总结了一下关于接口,抽象类的一些特性
java访问权限修饰符[参考].pdf
继承和接口和java访问权限修饰符总结.doc
继承和接口和java访问权限修饰符总结.pdf
主要介绍了举例详解Java中的访问权限修饰符,是Java入门学习中的基础知识,需要的朋友可以参考下
对于Java中访问权限修饰符的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符,下面通过本文给大家简单介绍下java修饰符访问权限相关知识,感兴趣的朋友一起学习吧
1、包: 1、全部小写 2、第一级 指该项目的类型,如com,org,gov等, 2、 访问权限修饰符 3、封装性: 1、静态属性: 1、static属性可以使
Java 支持 4 种不同的访问权限: private 私有的 protected 受保护的 public 公共的 default 默认 1、访问权限 总结成如下表格: 修饰符 当前类 同一包内 子孙类 其他包 public yes yes yes yes protected yes yes ...
主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
答案:Java中的访问修饰符有public,protected,private,以及默认的(即不写任何修饰符)。它们分别表示对其他类或者其他包的访问权限。其中,public表示所有类都可以访问,protected表示同一包中和子类中可以访问...
1. 包 2. 权限修饰符 3. 不同权限的访问能力
1、多态基础语法 2、多态在实际开发中的作用 3、final关键字 4、关于package和import 5、关于访问控制权限
Java中的访问修饰符包括public、protected、private以及默认(不加修饰符)。 4. **Java中的四种访问权限是什么?** Java中的四种访问权限是public、protected、default和private,分别表示公开、受保护、默认...
访问控制符:访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限 我们的访问控制符有四种: public protected 不修饰 private 这里有一张经典的表可以说明他们的作用范围: 访问控制符 同一类...