java中的访问修饰符详解
主要讲述一下java中protected的修饰控制范围。
在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类、开发类、定义类的过程。类里面可以有main方法。(main方法不管存在那个类中,都要通过打点的方式调用某个类的成员)
在当前类的定义中,main方法之外,可以直接通过成员的名字来使用本类中的成员变量,不管这个成员是什么访问修饰符修饰的,也不用通过对象打点调用的方式进行,当前类的main方法中,可以通过对象打点的方式调用。所以说访问控制修饰符在当前类的定义中相当于没有起到任何作用。但是java程序的开发,不仅仅是开发一个类而已,更多的是类之间的相互耦合,换句话说就是一个已经定义好的类,需要作为另一个类的成员,或者是成为另一个类的局部变量(在方法中声明的)、或者是成为基类被子类继承等,也只有在这个时候访问控制修饰符才会起到访问控制的作用。
访问控制符中的private,和public是最好理解的。
private:
1.在当前类开发中,main方法之外可以直接借助名字使用,当前类的main方法中可以使用对象打点的方式直接使用成员。
2.在当前类之外,使用对象(或是类名,针对静态的)打点调用都是被限制的。这时候有同学问,那我开发的这个私有的成员难道不能使用了吗?不是,可以通过在当前类中开发一个公有的方法,在公有方法中可以使用这个私有的成员,从而达到间接使用私有成员。
3.在继承中,私有成员禁止被继承,也就是说在子类的开发中,拒绝直接使用私有成员的名字进行使用。
public:
1.在当前类开发中,main方法之外可以直接借助名字使用,当前类的main方法中可以使用对象打点的方式直接使用成员。
2.在当前类之外,使用对象(或是类名,针对静态的)打点调用是被允许的。
3.在子类中,公有成员允许被继承,也就是说在子类的开发中,可以直接使用公有成员的名字进行使用。
protected:
protected这个修饰符比较繁琐,它涉及到是否是同一个包的问题。
同一个包的情况:
1.在当前类开发中,main方法之外可以直接借助名字使用,当前类的main方法中可以使用对象打点的方式直接使用成员。
2.在当前类之外,同一个包中,使用对象(或是类名,针对静态的)打点调用是被允许的。
3.在子类中,同一个包中,受保护成员允许被继承,也就是说在子类的开发中,可以直接使用受保护成员的名字进行使用。子类的main方法中可以使用子类或是父类对象打点调用。
4.在当前类之外,子类之外,要使用子类的类中,同一个包中,可以使用子类或是父类对象打点调用。
不同包的情况:
1.在当前类之外,不同包中,使用对象(或是类名,针对静态的)打点调用是被禁止的。
2.在子类中,不同包中,受保护成员允许被继承,也就是说在子类的开发中,可以直接使用受保护成员的名字进行使用。子类的main方法中只能通过子类对象打点调用。父类对象不行,这个时候相当于父类中的受保护成员跨包了。
3.在当前类之外,子类之外,要使用子类的类中,与子类同一个包中,通过子类对象打点是调用不出父类中的受保护的成员的。父类对象更不行,这个时候相当于父类中的受保护成员跨包了。如果想要通过子类对象调用父类的受保护的成员,需要重新覆写父类的这个成员。
4.在当前类之外,子类之外,要使用子类的类中,与父类同一个包中,通过子类对象打点是可以调用父类中的受保护的成员的。父类对象也行,同个包中。
5.在与父类和子类都不同包的第三个包中,要想通过子类对象调用父类的受保护成员,可以通过覆写父类受保护成员,并将访问限制符修改成public。
在实际的开发中也许很少用到protected来作访问控制,但是java的这个修饰符设计很巧妙,思想很高。同包中可以看做是public,异包中可以看做private。讲一个实际的列子。clone()方法。
如果自定义的类,需要提供clone这个方法,实现对象副本的制作。那么需要重新覆写clone这个方法,clone这个方法在Object类中作为受保护成员被提供,且在Java中所有的类都是继承自Object的。有如下关系:
Object类处在java.lang包,
我们自定义的类,大多不在java.lang包中
而我们很有可能在另外的第三个包中调用自定义类的clone方法。
所以有如下开发方法:
在自定义类中覆写clone方法,并将方法改成public来修饰。
总结如下:

java中的访问修饰符详解的更多相关文章
- Java之Static静态修饰符详解
Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...
- 分享知识-快乐自己:java 中的访问修饰符
1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...
- abstract关键字、final关键字、static关键字、访问修饰符详解
abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:
- Java 访问修饰符详解
访问修饰符定义了类.属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private.default.protected 和 public. public,公共修饰符,被其修饰的类.属性 ...
- java中的访问修饰符
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符.其中package代表缺省的访问权限,具体到代码中就是不写任何修饰符的 ...
- JAVA中的访问修饰符和包
一.JAVA访问修饰符 访问修饰符,用来控制类中成员的可见性 有四个访问修饰符,分别是:default,private,public,protected 1.default(默认):默认权限,不用写的 ...
- java 中的访问修饰符
一. public:所有类都可以访问 protected:所有子类和同包下的类都可以访问 缺省:同包类都可以访问 private:类本身才可以访问 注意点:protected修饰类属性时,例如 pac ...
- java中的访问修饰符 (2013-10-11-163 写的日志迁移
访问级别 修饰符 同类 同包 子类 ...
- java中的访问修饰符2
综上所述:protected强调的是子类,deafult强调的是本包,private强调的是本类,public强调的是开放性.
随机推荐
- teb教程5
跟随全局规划器 简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡. 1.先看一下via-points当前的优化行为:启动下面节点 roslaunch teb_l ...
- shell script 二 判断符号【】 shift 偏移量 if then fi
判断符号[]类似于test.但是[]有通配符及正则表达式,为了区分,利用[]来做判断时,前后都需要加空格来区分.又一个坑 [ -z "$HOME" ];echo $? 例: 1 r ...
- JAXB读写xml
一.注解 在Java模型中的创建与 xml 文件对应的节点和属性需要用注解来表示 @XmlRootElement 作用:将一个Java类映射为一段XML的根节点参数: name 定义这个根节点 ...
- 【JS学习】慕课网8-17编程练习 网页的返回与跳转
编程练习 制作一个跳转提示页面: 要求: 1. 如果打开该页面后,如果不做任何操作则5秒后自动跳转到一个新的地址,如慕课网主页. 2. 如果点击“返回”按钮则返回前一个页面. 代码如下: 需要注意的是 ...
- 笔记65 Spring Boot快速入门(五)
SpringBoot+JPA 一.什么是JPA? JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期 ...
- 8、Python MySQL - mysql-connector 驱动
一. 在线安装 mysql-connector : pip install mysql-connector-python 二.操作流程 1.连接数据库信息: conn = mysql.connec ...
- javascript基本类型及类型转换
每种语言都有自己的基本类型,javascript也不例外.在javascript中有五大基本类型,分别是number,string,boolean,null,undefined.其他不属于这五种基本类 ...
- 对于异步编程Await和Async的理解
public class AsyncInSync { /// <summary> /// 同步代码里有异步代码 /// /// /// 结果 /// Main Thread Before ...
- react-router v3和v4区别
1.默认路由 v3 <IndexRoute> v4 <Route exact> 2.授权路由 import Redirect from 'react-router-dom' & ...
- HTTPS 加密原理探究
由于之前项目中IOS系统建议将http协议换成https协议所以查看相关资料在此记录 HTTPS 通讯过程的基本原理 问:Https是什么? 答: HTTP 协议定义了一套规范,让客户端或浏览器可以和 ...