复用类

7.1

编译器并不是简单的为每一个对象都提供默认对象,否则在许多情况下回增加不必要的负担,如果想初始化这些引用:

1.在定义对象的地方,这样可以保证在构造器调用之前被初始化

2.在类构造器中

3.在使用这些对象之前,这种方式成为惰性初始化。在生成对象不值得及不必要每次都生成对象情况下,减少额外负担

4.使用实例初始化。

7.2

带参数的构造器

如果没有默认的基类构造器,或者想调用带有参数的构造器,就必须用super显示编写调用基类构造器语句,并加以适当的参数列表

 

如果不在BoardGame()中调用基类构造器,编译器将报错:无法找到符合Game()形式的构造器

7.5

组合技术通常是用于想在新类中使用现有类中的功能而非他的接口形式。如果成员对象自身都隐藏了具体实现,这种做法是安全的。

继承的时候  使用一个现有类,并开发一个他的特殊版本,这意味着你在使用一个通用类,并为了某种特殊需要而将其特殊化。

is-a 关系是用继承来表达的  而 has-a的关系是用组合来表示的。

7.7向上转型

向上转型:有导出类转型成基类,从一个较专用的类型 向较通用的类型转换,所以总是很安全的。

7.8 final关键字

1.一个永不改变的编译时常量

2.一个在运行时被初始化的值,而你不希望它被改变。

注:用于对象引用时,final使引用恒定不变,一旦引用被初始化指向一个对象,就无法把它再改变指向另一个对象。对象其自身却是可以修改的。

类中所有的private方法都是隐式指定为final的,由于无法取用private方法,所有也就无法覆盖它,可以对private方法添加final修饰词,但这没有任何意义。

final类

final类不允许继承,不会拥有子类。

final类的域可以是final或不是,由于final类禁止继承,所以其中方法也隐式final,因为无法覆盖他们。

7.9初始化及类的加载

类的第一个实体创建或者对static成员的访问都可能引起类加载,且只发生一次,static域在此期间加载。

执行顺序:

父类--静态变量 
父类--静态初始化块 
子类--静态变量 
子类--静态初始化块 
父类--变量 
父类--初始化块 
父类--构造器 
子类--变量 
子类--初始化块 
子类--构造器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值