重温经典《Thinking in java》第四版之第六章 访问权限控制(三十七)

简介: 重温经典《Thinking in java》第四版之第六章 访问权限控制(三十七)

“6.2 Java访问权限修饰词”,该小节讲到了private、protected、包和public这几个修饰符的概念以及区别,在这里还是希望通过之前的提到的描述来学习这些内容。

(1)public:可以被所有其他类所访问。

(2)private:只能被自己访问和修改。

(3)protected:自身,子类及同一个包中类可以访问。

(4)default(默认):同一包中的类可以访问,声明时没有加修饰符

首先public的访问控制权限不需要借助例子来说明其使用,只要通过public修饰的类或者方法或者属性,不管在什么地方,均可以被使用。下面就private,proected和包访问权限举几个例子来讲解一下,也是本小节内容的例子。

6.2.3 private:你无法访问,关键字private的意思是,除了包含该成员的类外,其他任何类都无法访问这个成员。

 

classSundae { 
privateSundae() {} 
staticSundaemakeASundae() { 
returnnewSundae(); 
    } 
} 
publicclassIceCream { 
publicstaticvoidmain(String[] args) { 
//! Sundae x = new Sundae(); Sundaex=Sundae.makeASundae(); 
    } 
}

///:~

这个private的例子包含了一定的单例模式的思想,你不能通过new Sundae();的方式创建对象,因为构造函数是private的,该类只提供了静态的makeASundae()间接的创建对象。

“6.2.4 protected:继承访问权限”,当前虽然没有专门的介绍继承的概念,但是需要使用protected的权限演示,还是需要提前学习一下继承的概念。可以简单通过extends关键字来体会一下,比如:

class Foo extends Bar {

这种写法就可以理解为Foo继承Bar。下面直接举一个使用protected的例子:

packageaccess.cookie2; 
publicclassCookie { 
publicCookie() { 
System.out.println("Cookie constructor"); 
    } 
protectedvoidbite() { 
System.out.println("bite"); 
    } 
} 
importaccess.cookie2.*; 
publicclassChocolateChip2extendsCookie { 
publicChocolateChip2() { 
System.out.println("ChocolateChip2 constructor"); 
    } 
publicvoidchomp() { bite(); } // Protected method publicstaticvoidmain(String[] args) { 
ChocolateChip2x=newChocolateChip2(); 
x.chomp(); 
    } 
}

/* Output:

Cookie constructor

ChocolateChip2 constructor

bite

*///:~

上面代码中的protected void bite()就将bite()方法定义为了protected访问权限,只有这个方法所属类的继承类有权限使用,当然自己类内部也是可以使用的。

最后一种默认包权限的例子就不举具体的例子了,只要是在同一个包下的不是私有和protected修饰符修饰的类和方法均可以被访问到。

目录
相关文章
|
14天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
34 2
|
26天前
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
22 2
|
1月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
44 2
|
1月前
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
27 1
|
1月前
|
存储 Java
深入理解java对象的访问定位
这篇文章深入探讨了Java对象的访问定位机制,比较了使用句柄和直接指针两种主流的对象访问方式,并指出了它们各自的优势,例如句柄访问在对象移动时的稳定性和直接指针访问的速度优势。
32 0
深入理解java对象的访问定位
|
2月前
|
存储 Java 关系型数据库
java: 无法访问org.springframework.context.ConfigurableApplicationContext
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
45 11
|
2月前
|
安全 Java 编译器
java访问字段
java访问字段
25 6
|
2月前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
2月前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
18 1