再读thinking in java -- 第七章 复用类

本文深入探讨Java中非基本类型对象的特性,包括toString方法、构造器的使用及final关键字的应用。解释了如何通过super关键字调用父类构造器,并介绍了final数据的作用及其在方法中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个非基本类型对象都有一个toString方法。

创建一个类总是在继承(要么继承其他类,要么继承object)

每个类都可以拥有一个main方法用于测试。

java用super关键字表示父类。调用父类方法:super.function();

当创建一个导出类对象时,该对象包含了一个基类的子对象。该子对象被包装在导出类对象内部。基类在导出类构造器访问它之前就完成初始化。

没有默认构造器或者想用一个带参的基类构造器,就必须用关键字super来调用基类构造器:super(参数)

调用基类构造器必须是导出类构造器要做的第一件事。

向上转型过程中,类接口唯一可能发生的事就是丢失方法。

final数据:1、一个永不改变的编译时常量:必须是基本数据类型,定义时必须赋值;    2、在运行时被初始化的值,且不希望改变。

final用于对象引用时,则该引用无法指向另一个对象。

final static基本数据类型变量全用大写字母命名,且字与字之间用下划线。

java允许生成“空白”final:指被声明为final但又为给定初值的域。在使用前必须初始化,必须在域定义处或者每个构造器中用表达式对final进行赋值。

使用final方法的原因:

1、把方法锁定,以防任何继承类修改它的含义;     2、提高效率。早起java中,讲一个方法指定为final,就是同意编译器将针对该方法的所有调用都转为内嵌调用。(应该就变成了内联函数)对final方法调用时不会以正常方式执行(将参数压栈,跳至方法代码执行,然后跳回并清理栈中的参数,处理返回值),以方法体代码副本来代替方法调用,消除了方法调用的开销。若代码量很大,这样并不提高效率。且这个效果在新的java版本中并不存在。

类中private方法都隐式指定为final(因为无法被调用,所以无法覆盖)。覆盖只有在某方法是基类接口的一部分时才会发生,即必须能将一个对象向上转型为它的基本类型并调用相同的方法。若方法为private,它就不是基类接口的一部分。

final类中的方法隐式加了final修饰符。

类是在其任何static成员被访问时加载,且加载一次就不用在加载了。同一类中,static成员中,main方法是最后加载的。

当要运行一个类时,首先加载基类。加载顺序:基类static,子类static,基类成员初始化,子类成员初始化,基类构造器,子类构造器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值