java訪問權限(子類繼承父類的方法)


 

訪問控制
修飾符 當前類 同一包內 子孫類(同一包) 子孫類(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N(說明 N
default Y Y Y N N
private Y N N N N

父類A,K是類A的一個成員變量子類B 不在同一包,子類C 在同一包 

  • 子類與基類在同一包中:子類可以繼承父類的public、protected、default修飾的成員變量和方法

  • 子類與基類不在同一包中:子類只繼承父類的public protected修飾的成員變量和方法

 子類訪問基類的成員變量,並且成員變量是一個類K.

  • 子類與基類在同一包中:子類可以訪問父類的public、protected、default修飾的成員變量K的public、protected、default修飾過的方法(類C與K沒有繼承關系,但是在同一包,可以訪問K的public、protected、default修飾過的方法)(在C中,C與A同一包,根據規則,private不能訪問,所以k3不能訪問;k, k1,k2可以訪問,能訪問k,k1,k2的public,protected和default方法)

  • 子類與基類不在同一包中:子類只可以訪問父類的public修飾的成員變量K的public修飾的方法(類B與K沒有繼承關系,僅僅是不同的包,只能訪問K的public修飾的方法)(在B中,B與A不同包,根據規則,default和private不能訪問,所以k2,k3不能訪問;雖然k, k1可以訪問,也只能訪問類k,k1的public方法)

  (其實就是說:先判定是否為同一包,再判定是否為子孫類)

 package testExcel; publicclass A { publicint x = 5; protectedint y = 8; int p; privateint q; public K k; protected K k1; K k2; private K k3; publicvoid getPublic(){ System.out.print("public fun"); } protectedvoid getProtected(){ System.out.print("protected fun"); } void getDefault(){ System.out.println("default fun"); } privatevoid getPrivate(){ System.out.println("private fun"); } }package child; import testExcel.A; publicclass B extends A{ int getPublicX(){ return x; } int getProtectedY(){ return y; } // int getDefaultP(){ // return p; // 不能訪問 // } // int getPrivateQ(){ // return q; // 不能訪問 // }publicstaticvoid main(String[] args) { B b = new B(); b.getPublic(); b.getProtected(); b.k.getKPublicFun(); b.k1.getKPublicFun(); } }package testExcel; import testExcel.A; publicclass C extends A{ int getPublicX(){ return x; } int getProtectedY(){ return y; } int getDefaultP(){ return p; } // int getPrivateQ(){ // return q; // 不能訪問 // }publicstaticvoid main(String[] args) { C c = new C(); c.getPublic(); c.getProtected(); c.getDefault(); c.k.getKPublicFun(); c.k.getKProtectedFun(); c.k.getDefaultFun(); c.k1.getKProtectedFun(); c.k1.getKPublicFun(); c.k1.getDefaultFun(); c.k2.getKProtectedFun(); c.k2.getKPublicFun(); c.k2.getDefaultFun(); } }package testExcel; publicclass K { publicvoid getKPublicFun() { System.out.println("KPublicFun"); } protectedvoid getKProtectedFun() { System.out.println("KProtectedFun"); } void getDefaultFun(){ } privatevoid getPrivateFun(){ } } 

訪問控制
修飾符 當前類 同一包內 子孫類(同一包) 子孫類(不同包) 其他包
訪問控制
修飾符 當前類 同一包內 子孫類(同一包) 子孫類(不同包) 其他包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM