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

下面进入正题:

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

Java受保护的访问修饰符protected的更多相关文章

  1. Java入门系列之访问修饰符作用范围

    前言 之前以为Java和C#中访问修饰符差不多一样,后面才了解到还是有些差异,本节只讲解学习Java中访问修饰符一些需要注意的地方或者从概念上不太好理解我们会通过实际例子来说明,若有错误之处,还请批评 ...

  2. JAVA 中的权限访问修饰符(public,protected,default,private )

    JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...

  3. Java包、权限访问修饰符、封装性

    包 概念: 物理上是文件夹:逻辑上是有逻辑关系的类的集合 作用: 避免类重名:控制访问权限 命名规范: 在包名中,可以使用.号来区分包的级别:包名一般情况下是小写 第一级 指该项目的类型,如com,o ...

  4. Java面向对象入门(2)-访问修饰符

    Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...

  5. 访问修饰符protected

    protected(C# 参考) protected 关键字是一个成员访问修饰符. 受保护成员在其所在的类中可由派生类实例访问. 示例只有在通过派生类访问时,基类的受保护成员在派生类中才是可访问的. ...

  6. 访问修饰符 protected(s)

    protected 受保护的:可以在当前类的内部以及该类的子类中可以访问. using System; using System.Collections.Generic; using System.L ...

  7. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  8. c#中的访问修饰符Protected,privet ,public, internal,和internal protected

    Protected,privet ,public, internal,和internal protected的区别 Private修饰的,只能值类内部使用,外部不可以使用,子类不能直接访问,但可以通过 ...

  9. Java—匿名对象/内部类/访问修饰符/代码块

    匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...

  10. Java public 和 private 访问修饰符

    何为封装 从事面向对象编程的 Java 程序员,不可能不知道封装,它是面向对象编程的精髓,非常重要. 那什么是封装?字面意思就是把摆在外面的东西包起来. 一句话,封装就是对外隐藏内部细节. 那为何要封 ...

随机推荐

  1. VcXsrv: 一个好用的Windows X11 Server

    windows10没有系统自带的X11服务器,使用了几款X11的windows下X11服务器软件后发现了一个好用的软件--VcXsrv. 下载地址: https://sourceforge.net/p ...

  2. 局域网主机间的网络测速——适用linux主机和windows主机

    测速软件地址; https://iperf.fr/ 参考: 树莓派集群真的可以顶上一台高性能计算机吗 ============================================ Ubun ...

  3. 面向分布式强化学习的经验回放框架——Reverb: A Framework for Experience Replay

    论文题目: Reverb: A Framework for Experience Replay 地址: https://arxiv.org/pdf/2102.04736.pdf 框架代码地址: htt ...

  4. CH07_指针

    CH07_指针 指针的基本概念 作用:可以通过指针间接访问内存 描述: 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 语法: 数据类型 * 变量名; ...

  5. 火山引擎ByteHouse助力车企实现高性能数据分析

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.   新能源汽车市场正在迎来飞速发展时期.根据 IDC 预测,中国乘用车市场中,新能源车市场规模将在2028年超过 ...

  6. MPTCP(四):mptcpd编译及安装

    mptcpd编译及安装 简介 mptcpd可以在应用层执行mptcp多路径管理的相关操作 可以在普通的TCP连接基础上应用MPTCP协议,我描述得不准确,请参考下面得链接自行理解 https://mp ...

  7. linux中级——libcurl库访问百度

    libcurl简介: libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持H ...

  8. WinForm UI 库

    WinForm UI库 HZH_Controls HZHControls是基于.Net Framework4.0原生控件开发完全开源的一套控件,你不需要担心有其他控件或版权问题.提供完整的示例代码,方 ...

  9. ES6中对数组的数据进行排序

    今天在工作中遇到了要对多选数据进行排序的一个功能,在此学习记录一下. 实现效果:点击左边的向下或者向上排序的按钮实现数据的排序. 选择第二个向下排序,结果如下: 具体方法如下: //找到原来需要排序的 ...

  10. Element-UI 中使用rules验证

    第一种:写在data中进行验证 <el-form>:代表这是一个表单 <el-form> -> ref:表单被引用时的名称,标识 <el-form> -> ...