• 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

  • 相关阅读:
    Python--json处理
    Python--加密模块
    Python--函数即变量
    bzoj 2276: [Poi2011]Temperature
    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
    2017 9 15 noip模拟赛
    bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
    2017 9 11 noip模拟赛T2
    URAL 1613. For Fans of Statistics (2017 9 6 noip模拟赛T3)
    codeforces 105 B. Dark Assembly(birbe贿赂 noip模拟赛)
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12592728.html
Copyright © 2020-2023  润新知