「java访问权限控制」java中访问权限

博主:adminadmin 2023-01-24 19:33:10 362

今天给各位分享java访问权限控制的知识,其中也会对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访问权限控制的信息别忘了在本站进行查找喔。