java类的讲解_【java 基础】java类的权限讲解
java類權限有四種,分別是public,protected,private和默認的權限。其中前三個權限是有明確定義的修飾符的,而默認的權限沒有明確的修飾符(我們可以稱之為default),在定義類,方法或者屬性時,不用寫任何修飾符。其中權限的作用域如下面表格所示:類權限作用域
Public權限
看下面一段代碼
//在altsd.test包下有一個類Father
package altsd.test;
public class Father {
public int age;
int legs;
protected int eyes;
private int hhh;
private int getHhh(){
return hhh ;
}
}
//另一個包altsd.test1下有個Luren,與Father沒有任何關系
package altsd.test1;
import altsd.test.Father;
public class Luren {
Father father = new Father();
public int getAge(){
return father.age;
}
}
我解釋一下上面的代碼,在Luren類中我們只返回了Father.age成員,不是說我不想返回Father的其他成員,是因為Luren和Father在不同的包,又不是父子關系,所以在Luren類中只能有訪問Father的age成員,因為age的權限是public的。
總結:public權限的作用域是任何包下任何類都可以訪問
protected權限
看下面的代碼
另一個包altsd.test1下有個Child1,繼承Father類
package altsd.test1;
import altsd.test.Father;
public class Child1 extends Father {
public int getAge(){
return super.age;
}
public int getEye(){
return super.eyes;
}
}
在這個類中,我們只能訪問到父類的age和eyes成員,age的權限是public,這個在上面的代碼中已經解釋過了;eyes成員的權限是protected,因為Child1繼承Father,雖然不在同一個包中,但也能訪問eyes成員。
總結:protected權限的作用域是在只要有繼承關系,就可以訪問父類中的protected成員
default成員
看下面的代碼
//在altsd.test包下有一個類Ancle,沒有集成Father類
package altsd.test;
public class Ancle {
Father father = new Father();
public int getAge(){
return father.age;
}
public int getEye(){
return father.eyes;
}
public int getLegs(){
return father.legs;
}
}
在這個類中,Ancle可以訪問Father中的age,eyes,legs成員,age是public,eyes是protected,legs是default。public和protected上面已經講過。因為Ancle和Father是屬于同一個包的,所以Ancle中可以訪問Father的legs成員。
總結:默認權限(default)權限的作用域是同一個包下。
private權限
現在就只剩pravate權限了,只是我們所有的情況下都無法訪問到hhh這個成員。我們看上面的權限作用域表格對private權限的定義:類本身。返回去看Father類中有一個getHhh()方法,這個方法中成功訪問了hhh成員。現在應該能明白了吧。出去類本身可以訪問private成員,一切引用類對象的作用域都訪問不到private成員。
總結
以上是生活随笔為你收集整理的java类的讲解_【java 基础】java类的权限讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 时间处理_JAVA处理日期时间
- 下一篇: java web 柱状图_使用JFree