Java入门 类的组合和复用 / 实例成员和类成员

文章目录

  • 一、类的组合和复用
  • 二、实例成员与类成员
  • 所以总结一下:

一、类的组合和复用

我当时第一次看见,然后又看书上的定义,感觉真的是”高大上“,就是不好理解,后来一查才发现超级简单。

类的组合和复用:简单来说,就是在一个类中new另外一个类(组合)
eg:

class Door{//字段和方法
}
class Wheel{//字段和方法
}
public class Car{Door d = new Door();wheel w = new wheel();//其他字段和方法
}

而且可以不断的new同一个类(复用)
eg:

public class Car{Door d = new Door();wheel w1 = new wheel();wheel w2 = new wheel();wheel w3 = new wheel();
}

二、实例成员与类成员

类成员就是普通的变量或者方法前面加一个static

简单来说,类成员就相当于是所有类共同拥有的一个地方,如果其中所有类都可以对其进行修改,一经修改,则其他类里面的该类成员也会变成修改后的东西。

只要含有类成员的类,一经加载,那么其中的类成员就会被分配内存(始终都不会变),如果不是类成员,每new一次,就会分配一个新内存。所以类成员可以直接通过类名.类成员 或者 对象.类成员 调用;而实例成员只能靠对象调用。

这就会导致一个有意思的事情,那就是重写的问题。
这里菜鸟为大家举两个列子:

一、

class A{static int m;static void f() {m = 20;}class B extends A{void f() {m = 222;}}
}

这里大家初看确实像没有问题,但将其打入eclipse之后就知道了,其会报错:

This instance method cannot override the static method from A

意思是:
实例方法无法重写来自A

然后,如果你在B的方法前加一个static

class A{static int m;static void f() {m = 20;}class B extends A{static void f() {m = 222;}}
}

这样并不会报错,但你以为他重写了吗?
其实并没有,这个B只是隐藏了A中的f()。

这个你可以在B的上一行加上一个@voerride,@Override 的作用是:如果想重写父类的方法,比如:toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。

Override的用法:Override:java.lang.Override是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。 )

所以总结一下:

static方法是不能被重写的,只能被覆盖。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性

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

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

相关文章

MOGDB/openGauss数据库gs dump备份脚本及备份清理

MOGDB/openGauss 数据库 gs_dump 备份脚本及备份清理 需要对 MOGDB/openGauss 进行每天逻辑备份。如下脚本分享给大家。 一、备份脚本 1.脚本 c.sh (可以改名字)# database dump shell # you should change the GAUSSHOME GAUSSPORT GAUSSDATA DUMP_USER DUMP_PASSWORD #!/bi…

JavaEE进阶(13)案例综合练习——博客系统

接上次博客:JavaEE进阶(12)Spring事务和事务传播机制:事务回顾、Spring中事务的实现、Transactional详解(用法、rollbackFor、事务隔离级别、事务传播机制)-CSDN博客 目录 项目介绍 准备工作 数据准备 …

如何给Vue项目配置好一个nginx.conf文件?

如何给Vue项目配置好一个nginx.conf文件? 一般前端项目中,会有一个docker/nginx/nginx.conf文件,用于配置DockerFile配置等。 那么,如何给项目写好一个nginx.conf文件,以DockerFile为例: # 使用 Node.js …

《辐射4》是一款什么样的游戏 怎样在mac电脑上玩到《辐射4》辐射4攻略 辐射4开局加点 怎么在Mac电脑玩Steam游戏

辐射4(Fallout 4)是由Bethesda开发的一款动作角色扮演类游戏,为《辐射》系列游戏作品的第四代,于2015年11月10日发行。游戏叙述了主角一家在核爆当天(2077年10月23日),被Vault-Tec(避…

Spring Cloud Gateway核心之Predicate

路由 Predicate 工厂 Spring Cloud Gateway 将路由作为 Spring WebFluxHandlerMapping基础设施的一部分进行匹配。Spring Cloud Gateway 包含许多内置的路由Predicate 工厂。所有这些谓词都匹配 HTTP 请求的不同属性。多个 Route Predicate Factory 可以组合,并通过…

Android Studio中debug功能详解

本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下 运行debug模式 \1. 进入debug – 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键ShiftF9 – 点击图中红色圆圈圈起的右边按…

【技术分享】求取列表需求的redis缓存方案

为了在Redis中实现一个高效的排行榜列表缓存方案,你可以使用有序集合(sorted set,即上文提到的zset)来存储产品的排行,同时使用散列(hash)来存储每个产品的相关信息。这样,你可以快速…

[数据结构初阶】栈

各位读者老爷好,鼠鼠我好久没写博客了(太摆烂了),今天就基于C语言浅介绍一下数据结构里面的栈,希望对你有所帮助吧。 目录 1.栈的概念及结构 2.栈的实现 2.1定义栈 2.2.初始化栈 2.3.入栈 2.4.出栈 2.5.获取栈…

c++中list的简单实现

文章目录 list介绍节点类(listNode)__list__iterator(迭代器类)operator-> list的成员函数empty_init() 初始化节点list(list<T>& lt) 拷贝构造clear() 清除链表~list() 析构insert() 插入erase() 删除push_back() 尾插push_front() 头插pop_back() 尾删pop_front…

zabbix监控中间件服务

zabbix监控Nginx 自定义nginx访问量的监控项&#xff0c;首先要通过脚本将各种状态的值取出来&#xff0c;然后通过zabbix监控。找到自定义脚本上传到指定目录/etc/zabbix/script/ 在zbx-client客户端主机操作 #创建目录&#xff0c;然后将脚本上传到该目录mkdir /etc/zabbix/…

C# Dictionary<string, string> 对key做筛选

​ 工作中遇到了一个筛选Dictionary的Key的需求&#xff0c;记录一下。 场景&#xff1a;筛选出所有不包含点&#xff08;.&#xff09;的键。 备选方法&#xff1a; 直接使用for循环遍历&#xff0c;代码量较大。 使用Linq。 最终方法&#xff1a; 选择使用Linq的where…

【JS】关于this的使用

this 前言一、this是什么&#xff1f;二、做什么&#xff1f;1.全局环境2.函数环境3.new实例对象4.apply、bind、call绑定4.1 apply()4.2 call()4.3 bind() 三、为什么用this&#xff1f;四、如何改变this&#xff1f;五、应用场景&#xff1f;总结 前言 痛点 经常写Vue项目&a…

2023 年 3 月青少年软编等考 C 语言一级真题解析

目录 T1. 字符长方形思路分析 T2. 长方形面积思路分析 T3. 成绩等级转换思路分析 T4. 机智的小明思路分析 T5. 寻找特殊年号思路分析 T1. 字符长方形 给定一个字符&#xff0c;用它构造一个长为 4 4 4 个字符&#xff0c;宽为 3 3 3 个字符的长方形&#xff0c;可以参考样例…

C++单例模式、工厂模式

一、单例模式 (一) 什么是单例模式 1. 是什么&#xff1f; 在系统的整个生命周期内&#xff0c;一个类只允许存在一个实例。 2. 为什么&#xff1f; 两个原因&#xff1a; 节省资源。方便控制&#xff0c;在操作公共资源的场景时&#xff0c;避免了多个对象引起的复杂操作…

Unity的相机跟随和第三人称视角二

Unity的相机跟随和第三人称视角二 展示介绍第二种相机模式远离代码总结 展示 我录的视频上可能看不太出来&#xff0c;但是其实今天的这个方法比原来写的那个方法更简便并且死角更少一些。 这里我也做了两个人物偏移的视角&#xff0c;按Q是原来的两个相机模式切换&#xff0c…

论文阅读笔记 | MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment

文章目录 文章题目发表年限期刊/会议名称论文简要动机主要思想或方法架构实验结果 文章链接&#xff1a;https://doi.org/10.48550/arXiv.2004.05508 文章题目 MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment 发表年限 2020 期刊/会议名称 Publi…

BSD-3-Clause是一种开源软件许可协议

BSD-3-Clause是一种开源软件许可协议&#xff0c;也称为BSD三条款许可证。它是BSD许可证家族中的一种&#xff0c;是一种宽松的许可证&#xff0c;允许软件自由使用、修改和重新分发&#xff0c;同时也保留了一些版权和责任方面的规定。 BSD-3-Clause许可证的主要特点包括以下…

Marin说PCB之POC电路layout设计仿真案例---01

最近娃哈哈饮料突然爆火&#xff0c;看新闻后才知道春晚的的时候宗老已经病的很严重了&#xff0c;现在也已经离我们而去了&#xff0c;宗老是一个值得我们尊敬爱戴的伟大企业家。于是乎小编我立马去他们的直播间买了一箱娃哈哈AD钙奶支持一下我们的国货。 中午午休的时候&…

vue3中全局变量的定义和获取

在vue项目中&#xff0c;我们知道vue2定义全局变量是在main.js文件将变量挂载到vue.prototype.name"lisi"&#xff0c;在页面通过this.name去调用。但是在vue3中&#xff0c;这个定义全局变量有所改变&#xff1a; const app createApp(App) app.config.globalProp…

Excel如何开启VBA进行二次开发

经常使用Excel做数据分析的朋友平时用的比较多的可能只是一些常用的内置函数或功能&#xff0c;比如求和函数、字符串分割函数、分类汇总、IF函数、VLOOKUP函数等。大多数人认为Excel强大是因为内置了大量的函数。其实&#xff0c;作为一名资深程序猿&#xff0c;个人认为&…