章10——面向对象编程(高级部分)——代码块

news/2024/9/29 1:19:18

代码块/初始化块与方法的区别
无方法名、返回、参数,仅方法体。
不用通过对象或类显示调用,加载类/创建对象时隐式调用。

代码块的好处

总结:在有多个构造器的类中,可以把每个构造器中都需要有的重复语句抽取出来单独作为代码块,大大提高了程序的复用性。

public class CodeBlock01 {public static void main(String[] args) {Movie a = new Movie("a");Movie b = new Movie("b", 12);}}class Movie{private String name;private double price;private String director;{System.out.println("电影屏幕打开...");System.out.println("广告开始...");System.out.println("电影正式开始...");}public Movie(String name) {this.name = name;}public Movie(String name, double price) {this.name = name;this.price = price;}public Movie(String name, double price, String director) {this.name = name;this.price = price;this.director = director;}
}

代码块注意事项:
很重要!多复习!

注意!当调用到子类的static代码块时,其父类的static代码块也会被调用。(因为子类加载时其父类也会加载)

由上可以总结:类的加载和new实例之间是有重叠部分,且不相关的两件事情。
小结:
1.static代码块在类加载时执行,只执行一次。
2.非静态代码块在创建对象时调用,创建一次,调用一次。


代码块在构造器之前被调用。
示例代码如下:

public class CodeBlock02 {public static void main(String[] args) {A1 a1 = new A1();}
}class A1{private static int n1 = getVal1();private int n2 = getVal2();{System.out.println("1普通代码块");}static{System.out.println("1static");}public static int getVal1(){System.out.println("val1");return 10;}public int getVal2(){System.out.println("val2");return 30;}
}

输出如下:

val1
1static
val2
1普通代码块

当涉及到继承关系时的顺序:
父类加载->子类加载->父类构造->子类构造

有关最后一条:static代码块本质上也是一个static方法,普通代码块同理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

7-8月月报 | Apache SeaTunnel社区进展一览

各位热爱 Apache SeaTunnel 的小伙伴们,社区 7-8 月份月报来啦!这两个月项目有了哪些进展?又有谁登上了我们社区的贡献者榜单呢?快来一睹为快吧。 Merge Stars 感谢以下小伙伴上两个月为 Apache SeaTunnel 项目和社区发展所做的精彩贡献(排名不分先后):@Hisoka-X,@xxsc0…

docker 网络模式

说明Docker网络模式 配置 说明host模式 –net=host 容器和宿主机共享Network namespace。container模式 –net=container:NAME_or_ID 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。none模式 –net=none 容器有独立的Ne…

易基因:血液Target-BS揭示靶向DNA甲基化标记水平与患者乳腺癌风险相关|Nature子刊

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 符合遗传性乳腺癌和卵巢癌(HBOC)标准的患者中,只有不到15-20%携带致病性编码基因突变,意味着可能存在其他分子机制导致这种疾病的风险增加。外周血DNA甲基化是乳腺癌(BC)风险的潜在表观遗传标记。在分子…

Apifox 私有化部署企业版价格

Apifox 是一个企业级 API 研发一体化协作平台,提供从 API 管理、研发到自动化测试的协同模式。它支持多种 API 协议,包括 HTTP/2、WebSocket、gRPC、Dubbo、GraphQL 等,帮助企业轻松管理 API 数字资产。下面来聊聊 Apifox 的私有化部署解决方案,这可是个为企业量身定制的全…

Python 在PDF中添加条形码、二维码

在PDF中添加条码是一个常见需求,特别是在需要自动化处理、跟踪或检索PDF文件时。作为一种机器可读的标识符,PDF中的条码可以包含各种类型的信息,如文档的唯一标识、版本号、日期等。以下是一篇关于如何使用Python在PDF中添加条形码或二维码的文章。所需Python库 Spire.PDF f…

AI图像放大工具,图片放大无所不能

AI图像放大工具,如ESRGAN,对于提高由Stable Diffusion生成的AI图像质量至关重要。它们被广泛使用,以至于许多Stable Diffusion的图形用户界面(GUI)都内置了支持。AI图像放大工具,如ESRGAN,对于提高由Stable Diffusion生成的AI图像质量至关重要。它们被广泛使用,以至于许…

ArcGIS中快捷添加在线地图

ArcGIS中快捷添加在线地图 1、首先打开这个地址:(https://www.geosceneonline.cn/geoscene/webapps/gallery) 2、选择一个需要的地图服务,点击 在ArcMap 中打开 3、此时会下载一个文件。item.pkinfo 4、双击打开该文件,会默认打开ArcMap并创建空白地图,并将天地图作为底…

南沙信奥塞陈老师解一本通题:1408:素数回文数的个数

【题目描述】求11到n之间(包括n),既是素数又是回文数的整数有多少个。【输入】一个大于11小于1000的整数n。【输出】11到n之间的素数回文数个数。【输入样例】 23 【输出样例】 1 【提示】提示: 回文数指左右对称的数,如:292,333。 #include <bits/stdc++.h> using…