Java关于修饰符四个权限访问修饰符的问题

java四大权限修饰符详解java四大权限修饰符详解怀旧照片百家号private最严格的权限,private修饰的变量,只能在类的内部访问,其他地方都不可以访问!default默认权限,在类的内部,同一个包(包名相同)下面的类可以访问protected类内部,同一个包中的类,以及子类可以访问。public在任何地方都可以访问!本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。怀旧照片百家号最近更新:简介:弘扬中华民族饮食文化作者最新文章相关文章1、private搜索修饰词,表示成员是私有的,只有自身可以访问。
2、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限。
3、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。
&
4、public修饰词,表示成员是公开的,所有其他类都可以访问。
浏览: 2086 次
来自: 成都
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'java中四种权限修饰符, 平时编码中最常用的其实public和private, 虽然对protected的概念一直都知道, 但真正使用时才发现有些偏差.
protected表示被其修饰的成员可以被本类, 同包下的所有类, 以及本类的所有子类所访问.
被本类的所有子类访问很容易让人产生误解, 我在进行测试时, 第一反应就是在不同包下创建一个子类, 在main方法中new一个父类对象, 试图通过该对象.成员变量名 来调用protected的成员变量, 然而, 结果是------&编译出错 &0.0
查了一下资料,才知道, protected所谓的可以被子类访问, 是指可以被子类通过继承的方式直接拿来使用, 也就是说, 我需要new一个子类对象, 再调用该变量就没问题了.
阅读(...) 评论()为将来成为一位优秀的魔法师而努力!
JAVA中的权限修饰符
&&&&开发这么久,以前都是看别人的博客,总能学到许多知识,现在决定自己也要写一写,一来可以巩固自己所学的知识点,毕竟自己写的印象会深刻好多,二来也可以把所学知识分享出来,大家一起进步,以后可能工作会比较忙,不过会尽量抽时间写,今天就先从简单的 JAVA 基础写起吧!
Java中修饰符总结:
访问控制修饰符
作用: 用于控制被修饰变量、方法、类的可见范围.
public 的访问级别是最高的,其次是 protected、默认和 private.
成员变量和成员方法可以处于4个访问级别中的一个:公开、受保护、默认或私有.
存在继承关系时,父类不可以是 private,因为子类无法继承
顶层类可以处于公开或默认级别,顶层类不能被 protected 和 private 修饰.
局部变量不能被访问控制修饰符修饰 .
下图是在不同情况下各种权限修饰符的作用范围:
总结: 在不同包下面能够访问的权限修饰符只有: pulbic 与protected,但是 protected 必须要有继承的关系才能够访问。
abstract 修饰符
抽象类不能被实例化.
抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象方法.
如果子类没有实现父类中所有的抽象方法,子类也必须定义为抽象类.
抽象类不能被定义为 private、final、和 static 类型.
没有抽象的构造方法.
抽象方法没有方法体,如果一个方法没有方法体,那么该方法必须声明为抽象的方法.
非抽象类继承抽象类的时候,必须要把抽象类中的所有抽象方法实现.
final 修饰符
final 变量必须被显式初始化,并且只能被赋值一次值
final 修饰基本类型变量的时候, 该变量不能重新赋值
final 修饰引用类型变量的时候, 该变量不能重新指向其他对象
final 修饰的方法为最终的方法, 该方法不能被重写
private 类型的方法都默认为是final方法,因而也不能被子类重写
final 修饰的类为最终的类, 不能被继承
static 修饰符
如果声明了静态方法或变量,值是放在方法区,因为方法区是一个数据共享区;所以不管什么变量访问它,都是同一份.
在静态方法中不能直接访问实例方法和实例变量.
在静态方法中不能使用 this 和 super 关键字.
静态方法不能被 abstract 修饰.
静态的成员变量可以使用类名或者是对象进行访问,非静态成员变量只能使用对象进行访问.
静态函数可以直接访问静态的成员,但是不能够直接访问非静态成员.,非静态函数可以访问静态和非静态成员.
当类被加载时,静态代码块只能被执行一次。类中不同的静态方法代码块按他们在类中出现的顺序被依次执行.
当多个修饰符连用时,修饰符的顺序可以颠倒,不过作为普遍遵守的编码规范,通常把访问控制修饰符放在首位,其次是 static 或 abstact 修饰符,接着就是其他的修饰符
注意:以下修饰符一起用是无意义的,会导致编译错误:
abstract 与 private
abstract 与 final
abstract 与 static
没有更多推荐了,博客分类:
权限修饰符概述:
同一package
其他package
java访问权限修饰符(特殊情况除外)
不写时默认为friendly
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。为了条理清晰,分三种不同情况来总结。
访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一包中才能被访问。
friendly:在一个包中或者子类中才能被访问。
private: 只能在本类中访问。
实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
访问权限修饰符修饰类
不能用protected和private修饰类。
用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
子类与父类在同一包中
此时只有声明为private的变量与方法不能被继承(访问)。
子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。所以,访问权限修饰符权限从高到低排列是public, protected, friendly, private。
结合代码分析权限修饰符:
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
  为了条理清晰,分三种不同情况来总结。
  一 访问权限修饰符修饰成员变量和方法
  public:表明该成员变量和方法是共有的,能在任何情况下被访问。
  protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)
  class A
  protected int f( int a,int b
  假设B与A在同一个包中,则
  class B
   void g()
A a=new A();
A.weight=100;//合法
  特别说明:什么是在同一个包中?
  答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子)
  eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.
  没有使用package打包的,在同一目录下的类也会被视做同一个包。
  friendly:在这种情况下中,同protected。区别在第二和第三种情况中。
  class A
   int f( int a,int b
  假设B与A在同一个包中,则
  class B
   void g()
A a=new A();
A.weight=100;//合法
  private: 只能在本类中访问。
   Test()
money=2000;
   private int getMoney()
   public
void main(String args[])
Test te=new
te.money=3000;
int m=te.getMoney();
System.out.println("money="+m);
  PS: 实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
访问权限修饰符修饰类
  1,不能用protected和private修饰类。
  2,用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
访问权限修饰符与继承
  这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
  1,子类与父类在同一包中
  此时只有声明为private的变量与方法不能被继承(访问)。
  class Father
   int weight=100;
  class Son extends Father
   viod f()
money=10000;//
weight=100; //
  2,子类与父类不在同一包中
  此时private与friendly均不能被继承(访问), protected与public可以。
  Father.java
  package com.aaa
  public class Father
   protected
int money=120;
   protected int getMoney()
   void setMoney(int newMoney)
money=newM
  Son.java
  package com.bbb
  import com.aaa.F
  public class Son extends Father
   void f()
money=10000;//合法
//height=170;//非法,height为friendly修饰的变量
System.out.println(money);//输出结果是10000
//setMoney(300);
int number=getMoney();
System.out.println(number);//输出结果是10000
   public
void main(String args[])
Son sss=new Son();
所以,访问权限修饰符权限从高到低排列是public
,protected
,friendly, private。
浏览 18299
浏览: 219160 次
来自: 上海
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
发来感谢!准备尝试!https://m.yooshifu.co ...
爱死博主了
已经成功的推送了
爱死博主了
已经成功的推送了 ...
爱死博主了
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 java四种权限修饰符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信