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

  • 相关阅读:
    PAT甲级——1095 Cars on Campus (排序、映射、字符串操作、题意理解)
    PAT甲级——1096 Consecutive Factors (数学题)
    PAT甲级——1097 Deduplication on a Linked List (链表)
    博客作业06--图
    博客作业05--查找
    博客作业04--树
    博客作业03--栈和队列
    博客作业2---线性表
    博客作业01-抽象数据类型
    C语言最后一次作业--总结报告
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12592728.html
Copyright © 2011-2022 走看看