首页 > 编程语言 >章10——面向对象编程(高级部分)——代码块

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

时间:2024-09-03 16:35:52浏览次数:14  
标签:10 name Movie 代码 static 面向对象编程 public String

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

代码块的好处

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

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方法,普通代码块同理。

标签:10,name,Movie,代码,static,面向对象编程,public,String
From: https://www.cnblogs.com/gknives/p/18394893

相关文章

  • 全栈低代码项目,你手写一个企业级的低代码全栈项目
    ‌企业级全栈低代码项目技术探索‌在当今快速变化的软件开发领域,‌低代码平台正逐渐成为企业加速数字化转型的重要工具。‌全栈低代码项目旨在通过最小化手动编码,‌实现快速应用开发,‌同时保持高度的灵活性和可扩展性。‌本文将探讨如何手写一个企业级的全栈低代码项目,‌包括其核......
  • 实战复杂低代码项目React从架构到拆解
    实战复杂低代码项目:‌React从架构到拆解随着技术的不断进步和业务需求的日益复杂,‌低代码平台(‌Low-CodePlatform)‌已成为现代软件开发领域中的热门工具。‌而基于React的低代码平台,‌更是凭借其组件化、‌响应式、‌数据驱动等特性,‌为开发者提供了一种高效构建应用程序的新途......
  • 专业服务的10种在线引流技巧
    即使在今天,一些专业服务公司仍然迟迟未能采用在线潜在客户生成技术。这些公司依旧依赖传统方式如印刷广告和赞助来拓展业务。此外,许多专业人士仍然错误地认为,唯一获取新客户线索的方法是通过推荐和社交网络。喂……世界在变!一个新的业务发展模式已经为许多专业服务公司带来了......
  • 提升博客流量的10个SEO最佳实践
    想要增加网站的自然搜索流量吗?那么你需要遵循这些博客的SEO最佳实践!毕竟,优化博客文章的SEO是获取更多潜在客户和推动更多转化的最佳方式之一。事实上,通过SEO获取的潜在客户有14.6%的成交率,而60%的营销人员表示,入站策略是他们最高质量的潜在客户来源。更好的是,拥有了这些新客......
  • 软设每日一练10——某文件系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。
    【题目】某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若计算系统的字长为32位,磁盘的容量为300GB,物理块的大小为4MB,那么位示图的大小需要(      )个字。        A.1200    B.2400    C.6400    D.9600      ......
  • LG P9108 [PA2020] Malowanie płotu
    状态数是\(O(nm^2)\)的DP很好想,就是\(dp_{i,l,r}\)表示第\(i\)次的区间为\([l,r]\)的方案数。但是这个状态数就已经死了,而题目又提示\(n\timesm\leq1e7\),说明状态只能形如\(dp_{i,j}\)。这时就会想到一个简陋的打补丁方式:设\(f_{i,l},g_{i,r}\)分别表示第\(i\)......
  • 遇见 Maia 100,微软在 AI 硬件战中的最新武器
    微软找到了与NVIDIA竞争的方式,即Maia100AI加速器。这个新芯片代表了一种战略性举动,旨在通过提供为高性能云计算设计的先进功能来挑战NVIDIA在AI硬件领域的霸主地位。通过Maia100,微软希望提供一种更具成本效益和效率的解决方案,以管理大规模的AI工作负载。目前我们对微软Maia......
  • 10、DB-创建数据库表-SQL语句
     --目标:创建一个school数据库createdatabase`school`;--创建一个学生表(列、字段)使用SQL创建--学号int登陆密码varchar(20)姓名性别varchar(2)出生日期(datetime)家庭地址email--注意点:使用英文()表的名称和字段尽量使用``括起来--A......
  • git小组合作开发,pull和push代码
    *---------------------------------------------------------------------------------------------------解释说明:远程主分支:app_main (组长在用)        : 主分支的子分支:app_main_jjboy(假设这就是我的,一开始代码完全与组长相同)        :......
  • [1055]
    Togettheindexofthe“True”valuesinaPandasSeries,youcanusetheindexattributealongwithbooleanindexing.Here’sasimplewaytodoit:ImportPandas:importpandasaspdCreateyourSeries:series=pd.Series([True,False,True,False,......