详解访问修饰符protected和default的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youngogo/article/details/81137175

访问修饰符,即对访问范围的控制。在Java中,有以下几种访问修饰符:

1.对类而言:

(1)public:在所有的包中均可见

(2)default(默认):只在该类所在包中可见

注:类不能用private和protected来修饰

2.对成员变量和成员方法而言:

(1)public:在所有包中均可见(且可调用)

(2)protected:包内所有类中均可见(且可调用),包外有继承关系的子类可见(仅可在子类内部调用)

(3)private:只在同一个类中可见(且可调用)

(4)default(默认):

注意:

在同一个包中,尽管是protected的方法和属性,包内的任何类都可以访问到。

在父类和子类不在同一个包中的前提下,对于子类来说,子类继承了父类所有的属性和方法(任何访问修饰符),虽然对从父类继承来的protected的属性和方法可见,但是只能在子类的内部进行访问,即:(this.)方法名、(this.)属性名进行访问和操作,而无法在外部对子类进行实例化,并用子类对象.protected方法或属性来访问。

举个简单的例子,我们都知道Object类是所有类的父类,而在Object中有一个叫clone()的方法,那我们在实例化对象后能调用这个函数吗?通过实践证明是不可以的,给出的错误提示是:The method clone() from the type Object is not visible.该方法是不可见的,这就类似于我们刚刚提到的,虽然子类从父类中继承过来了包括protected的方法和属性,但对于外部的类都是无法获取到的。

最后补充说明protected修饰限定符的作用意义

protected修饰限定符,和private一样具有保护属性和方法的作用,但是它和private稍有不同,通俗的说,它提供了给外部包中的类访问的机会,相应地增加了程序之间的联系,提供了更多样的方式.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章