关闭

Java四种权限修饰符(public, default, protected, private)的用法和对比

标签: Javaclass权限修饰符publicprivate
702人阅读 评论(0) 收藏 举报
分类:

四种权限修饰符(public, protected, default, private)的权限大小

注意: default, 没有这个关键字, 它以为默认, 即什么也不加!
一般, 默认的可见性就是包可见性(package visibility).

本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
default Y Y
protected Y Y Y
public Y Y Y Y

面向对象中类及其组成所使用的常见修饰符总结

修饰符:
    权限修饰符: private, default, protected, public
    状态修饰符: static, final
    抽象修饰符: abstract

1. 类:
    权限修饰符:default,public
    状态修饰符:final
    抽象修饰符:abstract
    用的最多的就是:public

2. 成员变量:
    权限修饰符:private,default,protected,public
    状态修饰符:static,final
    用的最多的就是:private

3. 构造方法:
    权限修饰符:private,default,protected,public
    用的最多的就是:public

4. 成员方法:
    权限修饰符:private,default,protected,public
    状态修饰符:static,final
    抽象修饰符:abstract
    用的最多的就是:public

5. 除此以外的组合规则:
    成员变量:public static final
    成员方法:
        public static
        public abstract
        public final

相关注意点:

  1. abstract不能与以下关键字共存
    • private
      (当修饰类和成员方法时, 若抽象类里有抽象方法, 其应该被子类继承, 并且在子类里重写父类所有的抽象方法, 而被private修饰, 类就不能被继承, 成员方法就不能被访问)
    • final
      (原因同上, 当final修饰类和成员方法时, 类就不能被继承, 成员方法就不能被重写)
    • static
      (若用static修饰, 则只通过”类名.”就可直接调用抽象方法, 显而易见, 这样没有任何意义)
  2. 当一个类中所有的成员方法都是静态方法(全部加了static)时, 构造方法必须私有(加private).
    (例: 在java.lang中, Math类不用创建对象, 而直接调用其常量和静态方法 – Math.PI和Math.abs(a))

总结

在面向对象中, 三大特性(封装, 继承, 多态)的理解尤为重要, 但同时理解这四种权限修饰关系, 对于谁能调用谁, 是否有访问权限等问题, 解决起来更得心应手! 当然, 本文也是我在CSDN上第一次使用Markdown编辑器来写作的, 感觉还不错!


本文地址: http://blog.csdn.net/menglanyingfei/article/details/55210673
本文源自: http://blog.csdn.net/menglanyingfei?viewmode=contents
希望大家能多多评论和指点我的文章, 以相互交流和学习, 也欢迎大家到我的博客里看看对您有帮助的文章, 也欢迎转载,但希望在明确位置注明超链接的出处! 谢谢!

1
0
查看评论

[Java小案例01] 猜数字小游戏

遇到一个小问题, 虽然程序简单, 但其中包含的原理值得思考! 1. 需求: 给定一个整数(范围在1~100之间), 然后多次去猜, 每猜一次, 会提示"大了"或者"小了"直至猜中为止. 2. 解决思路:     a. ...
  • menglanyingfei
  • menglanyingfei
  • 2017-02-11 12:44
  • 254

IntelliJ IDEA的main方法,for循环,syso的快捷键

原文链接:http://blog.csdn.net/tiantiandjava/article/details/42269173备注: 个人把这篇文章做了新的排版, 方便查看!今天偶然发现了IntelliJ中 创建main函数的快捷键,依次还有for循环,System.out.println(); ...
  • menglanyingfei
  • menglanyingfei
  • 2017-09-29 10:03
  • 655

day_1_13 JavaWeb系列学习总结之jsp&el&jstl

JSP Java Server Page = html + java脚本 + jsp动态标签 Jsp的执行流程: JSP -> Servlet -> .class 服务器响应JSP过程: JSP在项目发布后, 被编译后的Servlet在哪里? 在Tomcat的work...
  • menglanyingfei
  • menglanyingfei
  • 2018-01-19 21:47
  • 59

解决 Implementation of project facet jst.web.jstl could not be found. Functionality will be limited.

在开启MyEclipse时遇到的问题:Description Resource Path Location Type Implementation of version 2.0 of project facet jst.jaxrs could not be found. Funct...
  • menglanyingfei
  • menglanyingfei
  • 2017-08-27 15:14
  • 1457

IDEA设置syso快捷键输出System.out.println();

用Eclipse时间长了, 就习惯之前的快捷键! 当然, IDEA不愧是Java开发的”利器”! 写起代码就是一个字 – “爽”! 建议大家可以去尝试一下!当然, 在IDEA中输出System.out.println();有它自带的快捷键 sout我们也可以自定义相关的快捷键, 以满足自己的习惯...
  • menglanyingfei
  • menglanyingfei
  • 2017-09-29 16:54
  • 1273

【Java关键字-访问范围修饰符】private、protected、public和default的区别

(1)public:可以被所有其他类所访问。 (2)private:只能被自己访问和修改。 (3)protected:自身,子类及同一个包中类可以访问。 (4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。  修饰符  类...
  • claram
  • claram
  • 2015-08-26 14:24
  • 9211

Java中访问权限修饰符protected, default

作用域   当前类    同package   子孙类 其他package  public √   √  √ √  protected √...
  • u013238950
  • u013238950
  • 2016-03-18 00:04
  • 2539

关于Java中的default访问权限问题

先说一下Java中的4中修饰符的访问权限 访问权限 类 包 子类 其他包public ∨ ∨ ∨ ∨protect ∨ ∨ ∨ ×default ∨ ∨ × ×private ∨ ...
  • qq_29513537
  • qq_29513537
  • 2017-04-08 16:41
  • 826

Java修饰符private、protected、public和default的区别

Java修饰符private、protected、public和default的区别
  • pl1612127
  • pl1612127
  • 2016-01-07 18:26
  • 3125

用例子理解Java权限修饰符(private,default,protected和public)

权限修饰用于限定对象起作用的范围,也就是,在什么地方我们能够访问到这个对象,在什么地方我们访问不到这个对象了,这里的对象是指属性、方法、类和接口。 一、权限修饰符作用于属性和方法。private,default,protected和public都能作用于属性和方法。 1.当private作用...
  • l294265421
  • l294265421
  • 2015-03-12 11:23
  • 2497
    个人资料
    • 访问:29554次
    • 积分:1321
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:11篇
    • 译文:0篇
    • 评论:12条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

    本人现在是一名大二软件工程专业的学生, 每月会坚持更新, 本博客会总结, 整理, 分享个人学习的相关技术知识, 用来记录自己不断进步的历程, 当然内容会以Java为主线.

    虽然是技术博客, 但毕竟是人, 也有自己的情感, 所以, 有时也会分享一些有用的学习资源和一些学习经验和方法, 同时也会写一些其它方面上自己的感受和想法!

    或许我的博客不是写得非常好, 但每一篇文章绝对会用心写! 如果, 你发现有不足或者错误之处, 非常欢迎指出, 当然也欢迎各位小伙伴们来交流技术和学习感受.

    每天进步一点点, 共勉!

    博客专栏
    最新评论