java 中组合与复用_java 复用代码(组合与继承)

java中的类都是围绕着类进行的。能够经过建立新类来复用代码,而没必要从头编写。可使用别人已经开发并调试好的类。此方法使用的窍门在于使用类而不破坏现有的程序代码。达到这一目的的方法有两种。第一种方法很是直观:在新类中建立现有类的对象,经过现有类的对象调用其中的成员,来达到复用代码的目的。因为新类是由现有类的对象所组成的,因此这种方式称为组合。该方式只是复用了现有程序的代码,而并不是它的形式。java

第二种方法则更细致一些,它按照现有类的类型来建立新类。在新类中无需改变现本身的形式,而是采用现有类的形式并在其中添加代码。这种神奇的方式称为继承,并且编译器能够完成大部分工做。继承是面向对象程序设计的基石之一。程序员

组合和继承之间的选择编程

组合和继承都也许在新类中放置子对象,组合是显示的这样作,而继承则是隐式的这样作。两者之间的区别何在,以及怎样选择呢?安全

组合技术一般用于想在新类中使用现有类的功能而非它的接口的形式。即,在新类中嵌入某个对象,让其实现所须要的功能,但新类用户看到的只是为新类所定义的接口,而非嵌入对象的接口。为取得此效果,须要在新类中嵌入一个现有类的private对象。工具

有时,也许类的用户直接访问类的组成部分是极具意义的;也就是说,将成员对象声明为public。若是成员对象自身都隐藏了具体的实现,那么这样作是安全的。当用户可以了解到你正在组装一组部件时,会使得端口更加易于理解。car对象即为一个很好的例子:学习

//发动机

class Engine {

public void start(){}

public void stop(){}

}

//车轮

class Wheel {

public void start(){}

public void stop(){}

}

//车门

class Door{

public void open(){}

public void close(){}

}

class Car {

Engine engine=new Engine();

Wheel [] wheel =new Wheel [4];

Door[] door=new Door[4];

pulbic void run(){

//具体实现

}

}      设计

上面的例子只是咱们分析问题的一部分,不是具体的底层实现,因此咱们使Car中的成员声明为public,这将有助于客户端程序员了解怎样去使用类,并且也下降了类开发者所面临的代码复杂度。但务必要记住,这仅仅只是一个特例,通常状况下应该使域成为private。调试

在继承的时候,使用某个现有类,并开发出它的一个特殊版本。一般,这意味着你在使用一个通用类,并为了某种特殊须要而将其特殊化。略微思考一下就会发现,用一个"交通工具"对象去构成一部"车子"是毫无心义的,由于"车子"不包括"交通工具","车子"仅仅是"交通工具"的一种(is-a)。is-a(是一个)用来表示继承关系,而has-a(有一个)用来表示组合关系。code

在面向对象中编程中,生成和使用程序代码最有可能采用的方法就是直接将数据和方法包装进一个类中,并使用该类的对像。也可使用组合技术使用现有类来开发新的类。而继承技术实际上是不太经常使用的。尽管咱们在学习OOP的过程当中屡次强调继承,但这不意味着要尽量的使用它。相反,应当谨慎使用这一技术,使其使用场合仅限于你确信该使用这一技术的状况下。那到底该使用组合仍是继承?一个最清晰的判断方法就是问一问你本身是否要重新类型向基类向上转型。须要的话继承则是必须的,若是不需那应当好好考虑是否使用继承。对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java继承组合是两种实现代码复用的方式。继承是指一个类可以继承另一个类的属性和方法,从而实现代码的重用。组合则是指一个类包含另一个类的对象作为其属性,从而实现代码的重用。 在图形类的设计,可以使用继承组合来实现图标的功能。首先,可以定义一个基础的图形类,包含常见的属性和方法,如形状、颜色、大小等。然后,可以使用继承来定义不同类型的图形类,如圆形、矩形、三角形等,这些子类会继承基础图形类的属性和方法,同时可以根据具体需求进行扩展和重写。 而在实现图标功能时,可以使用组合组合不同类型的图形类。可以定义一个图标类,包含一个图形类的对象作为其属性。图标类可以具有自己的属性和方法,如位置、旋转角度、比例等。通过组合,可以将不同类型的图形组合在一起,形成一个复杂的图标。同时,也可以通过修改图形类的对象来改变图标的形状、颜色等属性。 继承组合都是实现代码复用的重要方式,但在具体使用时需要考虑到实际需求和设计的灵活性。继承能够实现代码的重用,但会增加类的耦合性;组合能够实现更灵活的组合和功能扩展,但需要更多的代码来实现。因此,在具体的图标设计,可以根据具体需求和设计规范选择合适的方式来实现图标的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值