zoukankan      html  css  js  c++  java
  • 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(){ } } 

    访问控制
    修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
    访问控制
    修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
  • 相关阅读:
    算法-排序(二)-快速排序
    算法- 排序(一)
    python(十四)新式类和旧式类
    Python(十三)python的函数重载
    django(二)中间件与面向切面编程
    MySQL(二)MySQL的启动或链接失败
    django(一)验证码
    python(七) Python中单下划线和双下划线
    Python(十) Python 中的 *args 和 **kwargs
    python(六)列表推导式、字典推导式、集合推导式
  • 原文地址:https://www.cnblogs.com/sunupo/p/13226731.html
Copyright © 2011-2022 走看看