tij3笔记 006

•   
•    继承语法
关键字extends
只要main是public,无论其所属的类是否public,命令行均可调用该main方法。可以为每个类都创建一个main方法。考虑:javac文件时每个类都会做成class文件,再java类文件时便可以调用该main方法。可以利用main方法实际地对类进行测试。

在导出类中修改了基类的方法,再调用基类该方法时则需引入super关键字。编译器将强制初始化基类,对基类构造器的调用同样需要super关键字。
构造器构建的过程是向外扩散的,基类在导出类构造器可以访问它之前就已经完成了初始化。即使不为导出类创建构造器,编译器也会为其合成一个缺省的构造器,而该构造器调用基类的构造器。

用关键字super显式地编写调用基类构造器(带参)的语句并配以参数列表。
考虑:基类构造器带参时,编译器将强制程序员首先对基类构造器的调用置于导出类构造器中。
•    结合使用组合和继承
•    在组合与继承间选择
组合与继承都允许在新都立刻中放置自对象,组合是显式地做,继承是隐式地做。
组合技术用于想在新类中使用现有类的功能而非它的接口这种情形。即,在新类中嵌入某对象,让其实现所需要的功能,新类的用户看到的只是为新类定义的接口,而非所嵌入对象的接口。为取得此效果,需在新类中嵌入一个现有类的private对象。
将成员对象声明为pub,若成员对象自身隐藏具体实现,则这样的做法是安全的。

继承时则是在使用,并开发一个类的特殊版本。使用一个通用类,并为了。某种特殊需要而将其特殊化。

考虑is-a与has-a的差别
•    protected关键字
在实际项目中,经常会想将某些事物尽可能地对这个世界隐藏起来,但仍允许导出类的成员访问它们(仅对导出类开放)。此时需用protected关键字(protected同时提供包内访问权限)。

最好的方法是保持字段为private,通过protected方法来控制类继承者的访问权限。
•    增量开发
考虑继承的优点:它支持增量开发。引入的新代码不会为现有(已存)的代码中增添bug(将新的bug隔离在新的代码之中)。
•    向上转型
继承最重要的方面是用来表现新类和基类之间的关系:新类是现有类的一种类型。
导出类是基类的一个超集,它可能比基类含有更多的方法,但必须至少含有基类所含有的方法。
总之而考虑:接受基类引用的方法同样可以接受导出类的引用,这种将导出类引用转换为基类引用的动作,称为“向上转型”。

由此再次引发对组合与继承选择的问题:一个清晰的判断方法是考虑是否需要从新类向基类进行向上转型,若是则需引入继承。
•    final关键字
引入的两个理由:设计或是效率。
三种情况:数据,方法和类。

final数据
(1)一个永不改变的“编译时常量”。
在编译而非执行时执行计算式,减轻执行时负担。
(2)一个在运行时被初始化且不希望被改变的值。
特别地,当对对象的引用而非基本类型运用final时,其含义有所区别。对基本类型final将使其数值恒定,而对对象引用final使其引用恒定不变。一旦引用被初始化指向一个对象,就无法把它改为指向另一对象,然而对象自身可以被修改(java未提供使任何对象恒定不变的途径,该限制同样适于数组)。
一个既final又static的字段(static final)只占据一段不能改变的存储空间。
编译器对编译时数值一视同仁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值