【大话设计模式】封装 继承 多态

简介: 【大话设计模式】封装 继承 多态

封装

概念

每个对象都包含它能进行操作所需要的所有信息,这个特性成为封装 。因此对象不必依赖其他对象来完成自己的操作

好处

  1. 良好的封装能够减少耦合
  2. 类内部的实现可以自由地修改
  3. 类具有清晰的对外接口

继承

概念

继承定义了如何相互关联、共享特性。继承的工作方式是:定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性。子类不但继承了父类的所有特性,还可以定义新的特性。当两个类之间具备‘is-a’的关系时,就可以考虑用继承了

注:子类从它的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,它不能被继承,只能被调用。对于调用父类的成员,可以用base关键字

那什么是基类和派生类呢?

当创建一个类的时候,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为基类,这个新的类被称为派生类

1、基类和派生类的基本概念

class B : A{}

A是基类,B是派生类

一个类最多只允许从一个类中派生

class C : B{}

B还可以充当C的派生类

继承总是隐式为public的,System.Object是所有类的根

编译器会把你的类悄悄的编译成class A : System.Object{}

2、调用基类的构造函数

1. class B:A
2. {
3.  public B():base(){}
4.     public B(string sqlstr):base(sqlstr){}
5. }

创建派生类的语法

1. <访问修饰符> class <基类>
2. {
3. 
4. }
5. class <派生类> : <基类>
6. {
7. 
8. }

一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数

学习继承需记住

如果子类继承与父类,第一、子类拥有父类非private的属性和功能;第二、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三、子类还可以以自己的方式实现父类的功能(方法重写)。说来说去,就一句话——儿子要比老子厉害

继承的优点

  • 使得所有子类公共的部分都放在了父类
  • 使得代码得到了共享,避免了重复
  • 可使得修改或扩展继承而来的实现都较为容易

继承的缺点

  • 父类变,子类不得不类
  • 继承会破坏包装,父类实现细节暴露给子类,其实就是增大了两个类之间的耦合性

耦合性:是对一个软件结构内部不同模板间联系紧密程度的度量指标。简单的来说,就是藕断丝连,两个类尽管分开,但如果关系密切,一方的变化都会影响到另一方,这就是耦合性高的表现。继承显然时一种类与类之间强耦合的关系

多态

概念

多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行

注意

  • 子类一父类的身份出现
  • 子类在工作时以自己的方式来实现
  • 子类以父类的身份出现时,子类特有的属性和方法不可以使用

多态的原理

当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用,也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的

在使用多态的时候,我们用到了虚方法和方法重写

虚方法

概念

针对抽象方法引出的问题:如果需要在父类中提供一个方法,该方法有自己的方法体,子类根据自己的需要决定是否重写该方法,而不是必须重写,这既是虚方法

  • 用virtual修饰
  • 要有方法体,哪怕是一个分号
  • 可以被子类override
  • 除了封装类都可以写

虚方法的使用

  1. 抽象方法仅仅是声明,没有任何实现内容,抽象方法一般必须在子类中被重写以后才有使用价值
  2. 使用关键字virtual修改它的虚方法

方法重写

子类可以对父类进行重写,但是返回值和形参不变


相关文章
|
6月前
|
设计模式
二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
|
5月前
|
设计模式
**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合
【6月更文挑战第23天】**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合。工厂模式专注于单个对象,通过具体工厂创建具体产品,适用于简单对象创建;抽象工厂则关注一系列相关产品,提供创建一族对象的接口,适用于处理多个不兼容产品族。选择模式基于问题域的复杂性,单个产品需求时用工厂模式,多产品族时用抽象工厂模式。
32 5
|
5月前
|
设计模式 Java 数据库
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
|
设计模式 Java 数据库
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
|
6月前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
6月前
|
设计模式 缓存 安全
探索设计模式的魅力:从单一继承到组合模式-软件设计的演变与未来
组合模式:构建灵活树形结构的艺术。 组合模式旨在解决如何将对象组合成树形结构,隐藏具体实现,使客户端对单个对象和复合对象的使用具有一致性。通过将对象组合成树形结构,组合模式提供了层次化的结构,使系统更灵活、可扩展。 核心思想在于统一叶节点和组合节点。叶节点代表具体的对象,而组合节点则是其他对象的容器。该设计允许我们以统一的方式处理叶子和组合,简化了许多操作。实践中,组合模式适用于具有树形结构并且希望保持结构灵活的系统。它不仅提高了代码的可重用性和可维护性,还使得添加新功能变得简单,无需修改现有代码。...
91 0
|
设计模式 Java 调度
JAVA设计模式15:命令模式,将请求封装为对象,达到读写分离的效果
JAVA设计模式15:命令模式,将请求封装为对象,达到读写分离的效果
109 0
|
设计模式 JSON 前端开发
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
前端面试必看(手写Promise+js设计模式+继承+函数柯里化等)JavaScript面试全通关(1/3)
73 0
|
设计模式
[笔记]设计模式实践_SDLGUI封装系列之创建Widget
[笔记]设计模式实践_SDLGUI封装系列之创建Widget
|
设计模式
[笔记]设计模式实践_SDLGUI封装系列之开源库SDL2_gui编译
[笔记]设计模式实践_SDLGUI封装系列之开源库SDL2_gui编译
108 0

热门文章

最新文章

  • 1
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    45
  • 2
    C++一分钟之-C++中的设计模式:单例模式
    51
  • 3
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    36
  • 4
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    59
  • 5
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    54
  • 6
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    39
  • 7
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    49
  • 8
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    102
  • 9
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    74
  • 10
    Go语言设计模式:使用Option模式简化类的初始化
    71