Java编程思想之复用类

目的:使用类而不破坏现有程序代码。

方法:

1.组合(在新类中产生现有类的对象,常用),其较为普通的意思是在新类中创建某一个类的对象,然后使用其方法

2.继承(继承某个类,不常用)

以上两种方法都能从现有类型生成新类型

继承

1.初始化基类

由于现在涉及基类和导出类这两个类,而不是只有一个类,所以要试着想象到处类所产生的结果对象,会有点困惑。从外部来看,它就像是一个与基类具有相同接口的新类,或许还会有一些额外的方法和域。但继承并不只是复制基类的接口。当创建了一个导出类的对象的时,对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象是一样的。二者的区别在于,后者来自于外部,而基类的子对象被包装在导出类对象内部。

以上的话摘自于Think in Java,实际上描述的意思如以下代码所示

public  class A{

}

class B extend A{

}

其中 A a = new A(),a为基类直接创建的对象,B b = new B(),B 为导出类的对象。简单的理解可以说父类是基类,子类是导出类。

可以发现基类是“向外”扩散的,所以基类在导出类构造器可以访问它之前,就已经完成初始化了。即使你不为B()创建构造器,编译器也会为你合成一个默认的构造器,该构造器将调用基类的构造器。

代理

参考文章设计模式之代理模式

向上转型

image                 如图所示,便是向上转型的一个过程,A a = new B();这种将B引用转换为A引用的操作,称之为向上转型。

为什么成为向上转型

历史原因:以传统的类继承图的绘制方法为基础的:将根置于页面的顶端,然后逐渐向下。

由导出类转型成基类,在继承图上是向上移动的,因此一般称为向上转型。由于向上转型是从一个较专用类型将较通用类型转换,所以总是很安全的。在向上转型的过程中,类接口中唯一可能发生的事情是丢失方法,而不是获取它们。

 

结尾,再次分析组合与继承

在面向对象过程中,生成和使用程序代码最有可能采用的方法是直接将数据和方法包装进一个类中,并使用该类的对象。也可以运用组合技术使用现有的类来开发新的类;而继承技术其实是不太常用的。因此应当慎用继承,一个最清晰的判断方法就是问一问自己是否需要从新类向基类向上转型。如果必须向上转型,则继承是必要的

转载于:https://my.oschina.net/u/2260428/blog/702408

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值