欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Think IN JAVA --------JAVA访问权限控制,

来源: javaer 分享于  点击 42880 次 点评:96

Think IN JAVA --------JAVA访问权限控制,


1.JAVA为类中的field以及mehod提供四种访问权限:public     protected   private  (默认访问权限)包访问权限


1>public 修饰的field method ,包内其他的类以及外包中的类均可访问

2>private 修饰的field method , 只有同一类中的其他field 或method 才能访问该field或方法

3>包访问权限   没有任何访问权限控制符修饰的field method默认为包访问权限,只有处于同一包内的其他的类才可以访问,但对于这个包之外的类访问权限为private

4>protected :继承访问权限,a.创建一个新包,并且来自另一个包中继承类,那么唯一可以访问的就是源包中的public      b.在同一个包内执行继承工作,就可以操纵所有的包访问权限成员以及public成员   c.protected也提供包访问权限,即处于同一包内的其他的类才可以访问


2.java中的内部类以及处于同一个.java文件下的其他类


A.可以使用private \protected\默认  修饰,但内部类中的field\method必须都有static修饰,因此内部类也必须用static 修饰   

                     

1>private 修饰的内部类
public class TestInnerStatic { 

private static class InnerClass { 

public static void doSomething() { 

System.out.println("private Class doSomething"); 

} 

} 

public static void main(String[] args) { 

InnerClass.doSomething(); 

} 
} 

这个地方一定要注意了:内部类中方法只能是static的,因此,内部类也要声明为静态的! 

你如果把 public class TestInnerStatic 这个外部类的修饰符改为private,编译器马上就报错了!

不推荐内部类的写法-----这跟面向对象的理念是不协调的。但是作为java程序员,这个基本知识是要懂得,在特殊情况下很有必要使用----访问权限!
</pre><pre class="java" name="code" snippet_file_name="blog_20160906_8_304824" code_snippet_id="1869320">
<span >2>没有任何权限控制符号修饰的内部类</span>
public class CC {
   
 protected int i=5;
 private int k=0;
 public int s=3;
 static class GG{
    static int g=0;
 }
 public  static void main(String []args)
 {
  CC cc=new CC();
  System.out.println(GG.g);
 }
}
这个 地方一定要注意:内部类中的方法只能是static 的,所以内部类也要申明为静态
</pre><pre class="java" name="code" snippet_file_name="blog_20160906_8_304824" code_snippet_id="1869320">
<span >3>protected修饰的内部类同上所述</span>
<div>package org.c;</div><div>
</div><div>public class CC {
   
 protected int i=5;
 private int k=0;
 public int s=3;
 protected static class GG{
    static int g=0;
 }
 public  static void main(String []args)
 {
  CC cc=new CC();
  System.out.println(GG.g);
 }
}</div><div>
</div>



 B.java中位于同一个.java文件的除内部类以及public类外的其他类,都不可以用private\protected修饰,该类默认拥有包访问权限,即同一个包内的其他类可以访问,但对于这个包之外的类则无法访问

public class CC {
   
	protected int i=5;
	private int k=0;
	public int s=3;
	
	public  static void main(String []args)
	{
		CC cc=new CC();
		System.out.println(new GG().g);
	}
}
class GG{
	int g=0;
}


相关文章

    暂无相关文章
相关栏目:

用户点评