java封装之访问权限控制

封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。

对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。

使用封装有四大好处:

1、良好的封装能够减少耦合。

2、类内部的结构可以自由修改。

3、可以对成员进行更精确的控制。

4、隐藏信息,实现细节。

java封装信息有四种访问权限

包访问权限,public,protected和private.注意:类的访问权限仅仅只有两种,默认访问权限和public.平时所说的四种访问权限主要是针对它内部的成员变量和成员方法。一个类内部的成员不管是private,protected都可以相互直接访问。四种访问权限通常是指通过该类对象对该类成员进行访问的权限。因为程序对外提供的接口就是对象。通过对象类实施具体操作。如:该成员变量或方法具有包访问权限是指该类的对象可以在包内随意访问它(成员变量/成员方法)

public>protected>包访问权限>private

1、public

是指该类的对象可以在任何地方都可以访问到该类具有public的成员变量或方法。要保证方法和变量能够挎包访问,则首先得保证类能够跨包创建对象,即类首先是public.当然首先这个类也应当是public,否则在不同包中还是不能访问,因为首先这个类就不能创建对象,即使import也不行。如果这个类是默认权限,即使类的成员变量或方法是public,它也不能在包外进行访问,仅仅在包内进行访问。

package jin.feng1;
public class Cookie2 //此类必须是public否则类不能挎包访问
{
public int i;
public Cookie2(int i){this.i=i;}
public void print(){
 System.out.println("i:"+this.i);
}
}

package jin.feng2;
import jin.feng1.Cookie2;
public class Access
{
 public static void main(String[] args)
 {
 Cookie2 cie2=new Cookie2(3);
 cie2.print();
    }
}

2、protected

如果创建了一个新包,并自另一个包中继承类,那么唯一可以访问的成员就是源包的public成员,有时类的创建者希望有某个特定成员,把对它的访问权限赋予派生类而不是所有类。这就需要protected.protected也提供包访问权限。

protected有两种访问方式,一是通过对象访问,二是通过在一个派生类内部直接访问基类内部的成员。

为什么之前的仅仅通过对象进行访问,因为两个类没有建立关系。

package jin.feng1;
public class Cookie2
{
protected int i;
public Cookie2(int i){this.i=i;}
protected void print(){//包访问权限
 System.out.println("i:"+this.i);
}
}

package jin.feng2;
import jin.feng1.Cookie2;
public class Access extends Cookie2
{
 public Access(){ //如果基类的构造函数带参数,则派生类必须显示声明构造函数。
  super(3);
  print(); //类内部直接访问,派生类直接访问
 }
 public static void main(String[] args)
 {
 //Cook1 cook1=new Cook1(1, 2);
  Access asAccess=new Access();
  asAccess.i=9; //通过对象访问。
  asAccess.print();
}
}

3、包内访问权限(默认访问权限,不写):

该成员变量或方法具有包访问权限是指该类的对象可以在包内随意访问它(成员变量/成员方法)

包内访问权限

class Cook1{
 int i;//包访问权限
 int j;//包访问权限
 public Cook1(int i,int j){
  this.i=i;
  this.j=j;}
     void print(){//包访问权限
  System.out.println("i:"+this.i+" j:"+this.j);
 }
}
public class Access
{
 public static void main(String[] args)
 {
 Cook1 cook1=new Cook1(1, 2);
 cook1.print();//该类的对象可以在包内访问具有包访问权限的成员变量/方法
 cook1.i=9;//该类的对象可以在包内访问具有包访问权限的成员变量/方法
 cook1.print();
 }
}

4、private

通过该类对象不能访问该类具有private成员。

class Cook1{
 private int i;
 int j;
 public Cook1(int i,int j){
  this.i=i;
  this.j=j;}
  private   void print(){
  System.out.println("i:"+this.i+" j:"+this.j);
 }
}
public class Access
{
 public static void main(String[] args)
 {
 Cook1 cook1=new Cook1(1, 2);
 cook1.print();//出错,不可访问私有成员方法
 cook1.i=9;//出错,该类对象不可访问私有成员变量
 cook1.j=10;
时间: 2024-08-02 11:02:25

java封装之访问权限控制的相关文章

Java成员的访问权限控制

Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以是public,protected, package private(无修饰符), or private. 以下表格总结了类成员中不同访问权限控制修饰符对应的访问级别:

浅析Java中的访问权限控制

浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1.fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理? 此时,访问权限控制便可以

Think in Java(三):访问权限控制

1. 一个java文件中可以有多个类,但只能有一个public的类. 2. 类既不可以是private的,因为这会使得除该类职位,其他任何类都不可以访问它,也不可以是protected,所以对于类的访问权限只能是包访问权限或public.(一个内部类可以是private或protected) 3. 访问权限 public > friendly > protected > private

Java编程思想(六、访问权限控制)

访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关.便于未来重构代码,而不必对业务层做过多的改变.因此,Java提供了访问控制修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private. 1.包:类库单元.包内含有一组类,它们在单一的名字空间之下被组织在了一起.比如,在Java的标准发布中有一个工具库.它被组织在java.util名字空间之下.ja

学java教程之访问权限

学编程吧学java教程之访问权限控制发布了.欢迎大家通过xuebiancheng8.com来访问 java中在使用封装的时候有四种访问权限控制符. public 在任意包的任意类中都可以访问任何方法和属性 protected 在同包或者任意子类中可以访问任意方法和属性 默认控制符 也就是什么访问符都不用,在同包中可以访问 private 在同一类中可以访问属性和方法 以上这几个叫访问控制符,他们的权限从大到小.这几个关键词在java中自始至终都用用到.定要牢记. 更多内容请通过xuebianch

Java访问权限控制

访问权限控制   java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的.访问权限控制的等级,从最大权限到最小权限依次是:public.protected.包访问权限(没有关键字).private. 包:库单元 包内有一组类,它们在单一名字空间之下被组织在了一起.如果你向导入某个标准库中的类的话,可以使用import关键字.我们之所以要导入,就是要提供一个管理名字空间的机制.所有类成员的名称都是彼此分离的.所以具有相同方法的不同类在程序运行时不会出现错误的.

Java 访问权限控制:你真的了解 protected 关键字吗?

摘要: 在一个类的内部,其成员(包括成员变量和成员方法)能否被其他类所访问,取决于该成员的修饰词:而一个类能否被其他类所访问,取决于该类的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下,包访问权限),protected 和 public,而其中只有包访问权限和public才能修饰一个类(内部类除外).特别地,很多的介绍Java的书籍对protected介绍的比较笼统,常常会对大家造成误解.因此,本文重点揭示了 protected 关键字的内涵和用法,并介绍了一些其他

Java之路(五) 访问权限控制

在Java中,所有事物都具有某种形式的访问权限控制. 访问权限的控制等级从最大到最小依次为:public,protected,包访问权限(无关键词)和private. public,protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员(域或者方法)定义之前的. 一.类成员的访问权限 取得对某成员的访问权的唯一途径是: 1).使该成员成为public.无论谁在哪里,都可以访问该成员: 2).通过不加访问权限的修饰词并将其他类放置于同一包内的方式给成员赋予包访问

Java编程思想:第6章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 很多时候我们需要重构代码使之更可读,更易理解,更具维护性,但是又不能影响到客户端程序员的正常使用.我们根本不知道客户端程序员使用了哪些东西(方法),所以我们也不知道哪些东西可以改,为了解决这个问题,java提供了访问权限修饰词.访问修饰词加上包结构使得构件的捆绑和使用机制非常完善,不产生冲突. 6.1 包:库单元 用包来分隔管理不同的类. 不同包下的类需要导入,就是为了提供一个管理名字空间的机制.package 和 import就是为了解