`
lcy0202
  • 浏览: 177702 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java复用类-组合和继承

 
阅读更多

重用代码是java一个很好的功能之一,一般而言,实现代码重用java提供了两种方式:组合以及继承

组合:在已有的类的对象基础上创建新的类。

实例:

class Engine{
	public void start(){}
	public void stop(){}
}
class Door{
	public void open(){}
	public void close(){}
}
class Window{
	public void rollup(){}
	public void rolldown(){}
}
public class Car {
    private Engine engine=new Engine();
    private Door door=new Door();
    private Window window=new Window();
	public static void main(String[] args) {
		Car car=new Car();
		car.engine.start();
		car.door.close();
		car.window.rolldown();
	}
}
 

可以看到 组合方式是显式性地在新类中放置子对象,而继承则是隐式地做......

继承:在不改变现有的类基础上,采用现有类的形式并在其中添加新代码。

class Art{
	Art(){
		System.out.print("Art ~~~``");
	}
}
class Drawing extends Art{
	Drawing(){
		System.out.print("Drawing ~~~``");
	}
}
public class Cartoon extends Drawing{
	public Cartoon(){
		System.out.print("Cartoon ~~~``");
	}
	public static void main(String[] args) {
		Cartoon c=new Cartoon();
	}
}

总结:关于组合与继承的选择

组合一般用于在新类中使用现有类的功能而不是他的接口的情况,就是新类用户看到的只是为新类所定义的接口。

而继承则是用于在新类需要向基类转化的情况(多态),这也是组合和继承使用的最清晰的判断方法。

虽然继承是面向对象极力强调的,但是一般开始设计的时候,普遍都是用组合,只有确实有必要的时候才用到继承,因为组合更加具有灵活性.....

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    《java面向对象程序设计-继承和多态》教案.doc

    封装是面向对象编程的基础,它涉及到将数据(属性)和操作这些数据的方法(行为)组合在一个类中,以隐藏内部实现细节。在Java中,类(class)用于定义对象的结构,通过圆点符号(.)来访问对象的成员。封装有助于...

    java中继承和组合中图形的简单类的定义

    ### Java中的继承与组合在图形类定义中的应用 在Java编程语言中,继承与组合是面向对象编程(OOP)的两大核心概念。通过继承,一个类可以从另一个类那里继承属性和方法,从而实现代码的复用;而通过组合,则是在类...

    Core Java Volume I--Fundamentals JAVA核心技术 卷I 10th

    集合框架是Java标准库的核心部分,它提供了一组接口和类来存储和操作对象数组。List、Set和Map是其中最重要的接口,ArrayList、HashSet、HashMap等是它们常见的实现。学习如何使用这些集合,如何进行添加、删除、...

    java中慎用继承 以及java中的stack的败笔

    聚合和组合是比继承更灵活的代码复用方式。在聚合关系中,一个对象(容器)包含另一个对象(组件),但两者之间不存在所有权关系,如`TestAggregation`中的`CPU`和`Computer`。在组合关系中,对象内部持有其他对象的...

    java-design-patterns.zip

    结构型模式关注如何组合对象和类以构建更大的结构,比如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)。行为型模式则关注对象间如何交互,如策略(Strategy)、观察者(Observer)和责任链(Chain of ...

    类的组合和接口的实现

    在Java编程语言中,类的组合(Composition)和接口的实现(Interface Implementation)是两种重要的面向对象设计原则,它们在构建复杂系统时起着至关重要的作用。类的组合允许我们把小的、独立的类组合成更大的、更...

    Java面试宝典--牛客网.zip

    1. 类与对象:理解面向对象编程的基本概念,如封装、继承、多态,并能熟练编写类和对象。 2. 内存管理:理解Java内存模型,包括堆、栈、方法区,以及垃圾回收机制。 3. 数据类型:掌握基本数据类型和引用数据类型,...

    完整版Java全套入门培训课件 Java基础 03-面向对象(共18页).rar

    面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中的基石,它以对象为基本单元,通过封装、继承和多态等特性实现代码的模块化和可复用性。 1. **面向对象编程基础** - **类与对象**:类是面向...

    java基础-中级-高级-深入·

    - **集合概述**:Java集合框架是一组用于存储和操作对象的接口和类。 - **List与Set**:List是有序集合,允许重复元素;Set不允许重复元素。 - **Map**:键值对的集合,每个键都是唯一的。 ### Java高级 #### 1. ...

    Java与模式-Java

    - **合成/聚合复用原则**:优先使用对象组合而不是继承来达到代码复用的目的,这有助于降低类间的耦合度。 - **迪米特法则**:一个对象应该尽可能少地与其他对象发生相互作用。这有助于减少系统的复杂性。 #### 4. ...

    java学习ppt - 引用数据类型和对象

    综上所述,面向对象编程的核心在于通过类和对象的概念来模拟现实世界中的实体及其行为,通过封装、继承和多态等机制提高代码的复用性和灵活性。在实际开发中,合理运用这些概念可以帮助我们构建出更加健壮、易于维护...

    Java特别篇-关于线程创建的三种方式的总结对比

    - 通过这种方式创建的线程可以轻松地与其他类进行组合,提高代码复用性。 ##### (3)方式3:通过Callable和Future接口创建线程 - **创建步骤**: - 创建一个类,实现`Callable<V>`接口。 - 重写`call()`方法,...

    Java编程复用类代码详解

    Java 编程复用类代码详解 Java 编程复用类代码详解是指在 Java 编程中重用已经存在的类代码...Java 编程复用类代码是提高开发效率和代码可读性的重要方法,通过组合、继承、代理和重写/重载等方法可以实现代码的复用。

    Java设计一个银行帐户类(继承与多态)

    这里虽然没有明确的继承关系,但可以通过组合(Composition)的方式复用`BankCount`类的功能。继承是多态的基础,多态性允许子类对象替换父类对象,且能够调用父类的公共方法,同时也可使用子类特有的方法。 实验中...

    java-programming-chapter-interview.zip_java programming

    1. 继承与多态:理解继承的概念,如何通过多态实现代码复用。 2. 接口与抽象类:比较接口与抽象类的区别,了解何时使用它们。 3. 构造器与this关键字:运用构造器初始化对象,理解this的用途。 4. 枚举类型:学习...

    Java类思维导图

    Java类思维导图是理解Java编程语言中类与类之间关系的重要工具,它通过图形化的方式,清晰地展示了Java各类的结构、继承关系以及方法的使用。这份"Java思维导图"很可能包含了从基础的面向对象概念到高级特性的全面...

    类与对象-java实验报告

    本次实验的目的是深入理解和掌握Java编程语言中的类与对象的概念,通过设计和实现一系列几何图形类,包括点、直线、三角形、矩形、正方形、圆形和椭圆,来实践面向对象的设计方法。实验要求学生不仅能够创建数据域和...

    Java设计模式-图解-附代码.doc

    本文件“Java设计模式-图解-附代码.doc”主要探讨了Java语言中的设计模式,分为创建型、结构型和行为型三大类。下面将对这些模式进行详细解释。 1. **创建型模式**: - **工厂方法**:提供一个接口用于创建对象,...

    Java设计模式-图解-附代码

    - Adapter: 适配器类,通过继承或组合Adaptee来实现Target。 **类图**: **代码示例**: ```java // Target public interface Target { void request(); } // Adaptee public class Adaptee { public void ...

Global site tag (gtag.js) - Google Analytics