java 权限修饰符大小_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的成员(属性和方法)可以办到。
java 权限修饰符大小_Java中访问权限修饰符public protected private, 缺省默认权限的用法总结...相关推荐
- C++ 中的三种继承public , protected, private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- C++中的三种继承public,protected,private详细解析
我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员.然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限 三种 ...
- java 时间字符串比较大小_java中如何比较两个时间字符串的大小
思路: 先都转换成日期.然后再用毫秒数进行比较. 下面是简单的例子: function tab(date1,date2){ var oDate1 = new Date(date1); var oDat ...
- JAVA修饰符类型(public,protected,private,friendly)
JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...
- C++类中的访问权限问题---public/protected/private
派生类继承了基类的全部数据成员和除了构造.析构函数之外的全部成员函数,但是这些成员的访问属性在派生的过程中通过继承方式可以来调整. 第一:private,public,protected方法的访问范围 ...
- JAVA出现x可以在Point中访问private是什么意思 高手进
JAVA出现x可以在Point中访问private是什么意思 高手进 class Point{ private int x; private int y; public Point(int x,int ...
- Java关键字系列(public,protected,private)
Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...
- C++:C++中public protected private关键字用法
C++:C++中public protected private关键字用法 笔者这里主要针对C++中public protected private关键字做一个较全面的总结.首先public prot ...
- object-c的存取权限(public/protected/private)
和C++,Java等面向对象编程语言一样,object-c中对于数据成员可以设定它们的访问权限,它规定了外部实体如何来访问这些资源.例如: 1. 代码: //Access.h #import < ...
最新文章
- java map缓存6_Java内存缓存-通过Map定制简单缓存
- Android打包的那些事
- pacificA架构介绍
- 某法院HP-P4500存储数据恢复案例
- 【五】每个球队胜率统计
- c++学习书籍推荐《超越C++标准库:Boost库导论》下载
- k8s 基础概念和术语
- JS实现的文章字符串中某个字符总个数统计在线小工具实例
- spring 注解重复(防重复请求)
- html中横线中间加字_干货|学术论文中的“三线表”如何绘制?
- opencv 人脸识别_python基于openCV人脸识别18行代码实现
- An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometri
- error: member “torch::jit::ProfileOptionalOp::Kind“ may not be initialized
- 【分布式机器学习】基本知识
- 【B2B】阿里巴巴汪海:1688成年礼—从中小企业数字化看B2B发展趋势
- PHP中的FPM是做什么的_fpm的配置与使用
- 人工智能导论练习题(上)
- 一道面试题:StringBuffer a=new StringBuffer (A); StringBuffer b=new StringBuffer
- 跨服功能和跨服比赛测试正常
- android 虚拟机介绍
热门文章
- 使用Oracle创建图书馆数据库
- PacBio sequence error correction amd assemble via pacBioToCA
- Linux常用 的命令
- matlab dfp法,DFP算法及Matlab程序.docx
- mysql anyvalue报错_Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
- mybatis 同名方法_MyBatis(四):xml配置详解
- python 终止、结束、退出 代码
- tf.keras.optimizers.Adam 优化器 示例
- 三十一、具有快表的地址变换机构
- 使用sql来拼接语句,最终传入Mybatis中执行