zoukankan      html  css  js  c++  java
  • Java受保护的访问修饰符protected

    声明:我不去上来给大家那一张被扯来扯去的√,×表,什么表想必大家心里清楚

    下面进入正题:

    protected 的主要着眼点在于两点:

    1.子类继承
    2.是否同包

    心里记着上面的那两点,那么protected 需要从以下两个方面或者说结论来分析说明:

    1.子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
    
    2.子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

    子类与基类在同一包中想必大家很好理解,下面阐述子类与基类不在同一包中这种情形:

    //代码1:包A中有一个动物类 
    package testa; 
    public class Animal { 
        protected void crowl(String c){ 
            System.out.println(c); 
        } 
    } 
    //代码2:包B中有两个类——猫类和鼠类 
    package testb; 
    import testa.Animal; 
    class Cat extends Animal{ 
    
    } 
    class Rat extends Animal{ 
        public void crowl(){ 
                crowl("zhi zhi"); //没有问题,继承了Animal中的protected方法: crowl(String) 
                Cat cat=new Cat(); 
                cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible 
        } 
    } 

    总结:A父与B子不在同一包下,当B extends A的时候,在子类B的作用范围内,只能调用本子类B定义的对象的protected方法(该方法从父类A中继承而来),而不能访问基类实例的protected方法。


    其他注意事项:

    1.protected 可以修饰数据成员,构造方法,方法成员

    2.不能修饰类(内部类除外)

    3.接口及接口的成员变量和成员方法不能声明为 protected

  • 相关阅读:
    Spring配置文件中指定init-method属性的作用
    Spring中的InitializingBean接口
    java中的instanceof用法
    mybatis中useGeneratedKeys和keyProperty的作用
    (转载)springboot集成httpinvoker的客户端
    (转载)spring 之间的远程调用-Spring Http调用的实现
    (转载)maven profile多环境自动切换配置
    (转载)使用Maven构建多模块项目
    python3 之logging模块
    python3之编码
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12592728.html
Copyright © 2011-2022 走看看