「java访问权限控制」java中访问权限
今天给各位分享java访问权限控制的知识,其中也会对java中访问权限进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java访问权限控制问题
- 2、什么是Java类的访问权限?
- 3、java中访问权限的控制。java默认的是包访问权限,但是对于有些情况如何处理呢。例如有四组类abcd(每组里
- 4、java中的四种访问权限是?
- 5、Java项目怎么控制权限啊?
java访问权限控制问题
//: access/debug/E03_Debug.java
/****************** Exercise 3 ****************
* Create two packages: debug and debugoff,
* containing an identical class with a debug()
* method. The first version displays its String
* argument to the console, the second does nothing.
* Import the class into a test program
* using a static import line, and demonstrate
* the conditional compilation effect.
***********************************************/
package access.debug;
public class E03_Debug {
public static void debug(String msg) {
System.out.println("Message: " + msg);
}
} ///:~
//: access/debugoff/E03_Debug.java
package access.debugoff;
public class E03_Debug {
public static void debug(String msg) {}
} ///:~
//: access/E03_DebugApp.java
package access;
import static access.debug.E03_Debug.*;
public class E03_DebugApp {
public static void main(String[] args) {
debug("DEBUG VERSION");
}
} /* Output:
Message: DEBUG VERSION
*///:~
//: access/E03_ReleaseApp.java
package access;
import static access.debugoff.E03_Debug.*;
public class E03_ReleaseApp {
public static void main(String[] args) {
debug("RELEASE VERSION");
}
} ///:~
什么是Java类的访问权限?
在解释访问权限控制之前,先看一个场景。
在学生信息管理系统中,有两个类,分别是学生类和课程类,课程类提供了课程表和课程安排两个方法,学生类可以调用课程类提供的课程表查看课程安排,但不能调用课程安排方法,该如何处理,此时就可以利用访问权限来进行控制。
在Java中,提供了四种访问权限控制:默认访问权限(包访问权限),public,private以及protected。
默认访问权限(default):即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
private: 对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护的”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。下表列出了四种访问权限的控制粒度:
例1:
Main.java:
package com.cxh.test1;
public class Main {
/**
* @param args */
public static void main(String[] args)
{
// TODO Auto-generated method stub
People people = new People("Tom");
System.out.println(people.getName());
}
}
People.java
package com.cxh.test1;
class People { //默认访问权限(包访问权限)
private String name = null;
public People(String name)
{
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name)
{
this.name = name;
}
}
从代码可以看出,修饰People类采用的是默认访问权限,而由于People类和Main类在同一个包中,因此People类对于Main类是可见的。
java中访问权限的控制。java默认的是包访问权限,但是对于有些情况如何处理呢。例如有四组类abcd(每组里
如果不考虑其他的类的话,c访问d,a不能访问d,那么把d相关权限设为default,a,c处在不同包里,c、d在同一个包里。a,c都访问b,那么就让b的权限设为公开。
但这可能导致包之间管理的混乱。
如果一定要跨包访问,但又不愿设立public的访问权限,那么单靠JAVA语言的访问控制很难做到,则可以稍微提升一下耦合度,并借助多态来实现。
比方说,a、b是两个不同的包,要让a能访问b的default的东西,那么可以如下:
a设立一个接口:
public interface IA
{
void F();
}
某个要使用b的函数
public class A1
{
……
private IA a;
……
public void G(IA a)
{
……
this.a=a;//这样就可以在别的方法里用
a.F();//多态,a根本不知道b里有什么类也能访问相应的方法。
……
}
}
以上是a里的,下面是b里的:
如果是整个类都是default的
class B1 implements IA
{
public void F() {……}
public B1()
{
new A1().G(this);//这样就把自己传给了a,a不用知道自己是什么东东也能使用F方法。
}
}
如果是类的部分方法为default的
public class B2
{
……
void FF();//想让这个方法被a调用。
private class B22 implements IA//把B22的实例传给a
{
public void F()
{
FF();//这就等于让a调用FF方法了。
}
}
}
上面这种方法缺点不少,得由b亲自把自己的实例传给a,使得类间的关系变得有点复杂,但是用好了还是可以最大程度降低其缺点。
上面这种结果是你要的吗?还有什么特别的要求吗?
java中的四种访问权限是?
1、私有权限(private)
private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
2、默认权限(default)
类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
3、受保护权限(protected)
protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
4、公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
Java项目怎么控制权限啊?
用过滤器实现 ..需要进行web.xml的手工配置,
步骤一般是建一个过滤器,在doFilter这个方法里写验证session 中用户的权限,如果不符,则不能进入你所配置访问的文件夹内所有的JSP页面了..它便会自动重定向到你的指定页,比如登入页等
还有就是配置XML文件了.有多个权限可以配置多个文件夹
下面是配置的代码..
filter
filter-nameAdminFilter/filter-name
filter-classgroup1.filter.AdminFilter/filter-class
/filter
filter-mapping
filter-nameAdminFilter/filter-name
url-pattern/affiche/*/url-pattern
/filter-mapping
java访问权限控制的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中访问权限、java访问权限控制的信息别忘了在本站进行查找喔。