Java中继承静态属性,方法,和非静态属性和方法的继承区别

结论:

Java中静态属性和静态方法是可以被继承的,但是不可以被重写,而是被隐藏。

Java中非静态属性,可以被继承,但是不可以被重写,而是被隐藏。

Java中非静态方法,可以被继承,可以被重写,因此可以实现多态

情况

属性

(1)当我们父类A中和子类B中有相同的静态属性,或者非静态属性名称的的时候,如果我们这样调用

A a = new B();

那么我们使用a变量访问的属性都是我们父类中的属性。

(2)当我们父类A中有子类B中没有的静态属性和方法的时候

A a = new B();

我们使用a变量访问的属性也是我们父类中的属性。

B b = new B();

我们使用b变量访问的属性也是我们父类中的属性(因为继承过来了)

(3)当我们父类A中和子类B中都含相同名称的静态变量和非静态变量

B b = new B();

这时候使用b变量访问的是我们B中的属性。因为属性不可以重写

关于属性总结一条规律就是 看我们 A a = new B();中调用者a的左边 访问的都是左边的属性。

 方法

(1)对于非静态方法我们都知道

A a = new B();

如果B中有这个方法,那么访问的是B中的方法,如果B中没有这个方法,访问的是从A中继承的这个方法

B b = new B();

如果B中有这个方法,那么访问的是B中的方法,如果B中没有这个方法,访问的是从A中继承的这个方法

A a  = new A();

访问的是A中的方法

关于非静态方法,总结一条就是 看我们 A a = new B();中调用者a的右边 访问的都是右边边的方法

 方法

(2)父类A中有静态方法但是子类B中有同名的静态方法

A a = new B()

调用的是A中的方法

B b = new B();

调用的是B中的方法

(2)父类A中有静态方法,但是子类B中没有这个名称的静态方法

A a = new B()

调用的是A中的方法

B b = new B();

调用的是B中从A中继承的方法

关于静态方法总结一条规律就是 看我们 A a = new B();中调用者a的左边 访问的都是左边的静态

 方法

测试例子

package com.example.test;public class A {public static String staticStr = "A静态属性";public String nonStaticStr = "A非静态属性";public static void staticMethod(){System.out.println("A静态方法");}public void nonStaticMethod(){System.out.println("A非静态方法");}
}
package com.example.test;public class B extends A{//子类Bpublic static String staticStr = "B改写后的静态属性";public  String nonStaticStr = "B改写后的非静态属性";public static void staticMethod(){System.out.println("B改写后的静态方法");}}
package com.example.test;public class C extends A{//子类C继承A中的所有属性和方法}
package com.example.test;public class StaticExtendsTest {public static void main(String[] args) {C c = new C();System.out.println(c.nonStaticStr);System.out.println(c.staticStr);c.staticMethod();//输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承System.out.println("-------------------------------");A c1 = new C();System.out.println(c1.nonStaticStr);System.out.println(c1.staticStr);c1.staticMethod();//结果同上,输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承System.out.println("-------------------------------");B b = new B();System.out.println(b.nonStaticStr);System.out.println(b.staticStr);b.staticMethod();System.out.println("-------------------------------");A b1 = new B();System.out.println(b1.nonStaticStr);System.out.println(b1.staticStr);b1.staticMethod();//结果都是父类的静态方法,说明静态方法不可以被重写,不能实现多态}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶坐标系与旋转矩阵的确定(位置补偿)

最近新接受的模块需要做位置补偿,按说是比较简单的。但是因为坐标系的问题导致了诸多麻烦出现,事后复盘如下: 一个未知的坐标系如何确定方向: 此处出现了转换WGS坐标系转东北天,且东北天第一帧初始化局部坐标系。 此…

5G端到端案例三:锚点基站侧5G连接与VOLTE专载建立流程冲突导致CSFB回落问题

1. 问题描述: NSA组网场景下,语音业务仍使用4G VoLTE方案,在拉网测试中,发现存在较多流程交叉导致的VOLTE接入失败的问题。 流程冲突时的空口信令表现为,终端添加SCG流程与语音专载流程冲突时,专有承载建…

重点媒体如何投稿?考核稿件投稿指南

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 机构组织,国企央企都需要定期将相关新闻投递到央媒,官媒,或者地方重点媒体中,那么如何进行投稿了,今天就与大家分享下。 央媒投…

vue-nextTick(nextTick---入门到离职系列)

官方定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM。 个人理解 假设我们更改了某个 dom 元素内部的文本&#xff0c;而这时候我们想直接打印这个更改之后的文本是需要 dom 更新之后才会实现的。 小案例 <tem…

聊一聊EGO-Planner膨胀系数的大小对无人机避障飞行的影响

EGO-Planner简介 EGO-Planner作为业界知名的无人机轨迹规划算法&#xff0c;其优势在于能够在复杂环境中快速规划出安全、平滑且动态可行的飞行轨迹。在这个算法中&#xff0c;膨胀系数发挥着关键作用。它通过扩大障碍物的感知范围&#xff0c;提供额外的安全边距&#xff0c;…

NOIP2018-J-4-对称二叉树的题解

原题描述&#xff1a; 题目描述 时间&#xff1a;1s 空间&#xff1a;256M 一棵有点权的有根树如果满足以下条件&#xff0c;则被轩轩称为对称二叉树&#xff1a; 1. 二叉树&#xff1b; 2. 将这棵树所有节点的左右子树交换&#xff0c;新树和原树对应位置的结构相同且…

Rust 介绍与开发环境搭建

Rust简介 Rust是一种新型的系统编程语言&#xff0c;注重安全、速度和并发性。这种语言设计的目标是提供了内存安全的保证&#xff0c;同时保持高性能和零成本抽象。Rust不使用垃圾收集器&#xff0c;提供了类似C的资源管理模式&#xff0c;拥有像Python一样丰富的函数库&…

python输出HelloWorld

学习编程语言的第一步几乎都是输出“Hello World”&#xff0c;而python也是如此。想要使用python语言输出"Hello World",需要使用python的heapq包中的heappush和heappop函数&#xff0c;heapq模块来实现最小堆&#xff0c;最小堆用于每次从所有列表的当前元素中选择…

Dubbo之消费端服务RPC调用

在消费端服务是基于接口调用Provider端提供的服务&#xff0c;所以在消费端并没有服务公共接口的实现类。 使用过程中利用注解DubboReference将目标接口作为某个类的字段属性&#xff0c;在解析该类时获取全部字段属性并单独关注解析存在注解DubboReference的字段属性。通过步…

电销智能机器人 2024年智能电话机器人

随着技术的发展&#xff0c;人工智能的时代离我们越来越近&#xff0c;在人工智能的影响下许多传统行业开始向智能化方向转型&#xff0c;其中最明显的就是电话营销方面的工作。为了减轻人工销售负担出现了一个电销机器人系统&#xff0c;每天能拨打3000通电话&#xff0c;最高…

JAVA讲解算法-排序算法-选择排序算法-02

一、定义 选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;大&#xff09;元素&a…

【深度学习】LoRA: Low-Rank Adaptation of Large Language Models,论文解读

文章&#xff1a; https://arxiv.org/abs/2106.09685 文章目录 摘要介绍LoRA的特点什么是低秩适应矩阵&#xff1f;什么是适应阶段&#xff1f;低秩适应矩阵被注入到预训练模型的每一层Transformer结构中&#xff0c;这一步是如何做到的&#xff1f; 摘要 自然语言处理的一个重…

计算机网络-网络互联与互联网(一)

1.常用网络互联设备&#xff1a; 1层物理层&#xff1a;中继器、集线器2层链路层&#xff1a;网桥、交换机3层网络层&#xff1a;路由器、三层交换机4层以上高层&#xff1a;网关 2.网络互联设备&#xff1a; 中继器Repeater、集线器Hub&#xff08;又叫多端口中继器&#xf…

图论(算法竞赛、蓝桥杯)--Dijkstra算法最短路

1、B站视频链接&#xff1a;D02 最短路 Dijkstra 算法_哔哩哔哩_bilibili 题目链接&#xff1a;【模板】单源最短路径&#xff08;弱化版&#xff09; - 洛谷 #include <bits/stdc.h> using namespace std; #define INF 2147483647 int n,m,s,a,b,c; const int N100010…

Redis的主从复制和哨兵模式

Redis的主从复制和哨兵模式 Redis集群搭建&#xff08;一主二从&#xff09;replication 主从复制配置文件 redis.confRedis主从复制工作原理全量复制增量复制redis主从复制策略 搭建集群 &#xff08;主从复制引入&#xff09; 哨兵模式概念哨兵配置文件 sentinel.conf哨兵配置…

ArcgisForJS如何使用ArcGIS Server发布的切片地图服务?

文章目录 0.引言1.准备海量地理数据2.ArcGIS Server发布切片地图服务3.ArcgisForJS使用ArcGIS Server发布的切片地图服务 0.引言 ArcGIS Server是一个由Esri开发的地理信息系统&#xff08;GIS&#xff09;服务器软件&#xff0c;它提供了许多功能&#xff0c;包括发布切片地图…

java面试设计模式篇

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

对于着色器语言 opengl 和 direct3d 有区别吗?

OpenGL和Direct3D是两种不同的图形API&#xff08;应用程序接口&#xff09;&#xff0c;它们都支持着色器编程&#xff0c;但在语法、结构和一些功能细节上存在差异。 OpenGL着色器语言&#xff1a; OpenGL使用GLSL (OpenGL Shading Language) 作为其着色器编程语言。GLSL可以…

挑战杯 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

vue实现列表自动滚动效果

1.下载插件 npm install vue-seamless-scroll --save 2.在main.js中引入注册 import scroll from vue-seamless-scroll Vue.use(scroll) 3.在页面中使用&#xff08;写一个固定的表头 el-table:show-header"status" 设置为false,自带的表头不显示&#xff09; <…