大话设计模式学习笔记——面向对象基础

前言


  好记性不如烂“笔头”系列——大话设计模式学习笔记

  目录

  • 面向对象基础

面向对象基础

什么是类与实例

  一切事物皆为对象,即所有的东西老师对象,对象就是可以看到、感觉到、听到、触摸到、尝到、或闻到的东西。准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识。面向对象编程,英文叫
Object-Oriented
Programming
,其实就是针对对象来进行编程的意思。类就是具有相同属性和功能的对象的抽象集合。实例就是一个真实的对象。比如我们属于‘人’类,而个人就是‘人’类的实例了。而实例化就是创建对象的过程,使用new
关键字来创建。

什么是构造方法

  构造方法,又叫构造函数,其实就是对类进行初始化。构造方法分为实例构造方法和类构造方法,实例构造方法为创建实例对象时调用,类构造方法为创建类对象时调用。

什么是方法重载

  方法重载提供了创建同名的多个方法的能力,但这些方法需要使用不同的参数类型或参数个数不同。方法重载可在不改变原方法的基础上,新增功能。

什么是属性

  属性是一个方法或一对方法,但在调用它的代码来看,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。而字段是存储类要满足其设计所需要的数据,字段是与类相关的变量。属性有两个方法get
和set。get 访问器返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set
访问器没有显示设置参数,但它有一个隐式参数,用关键字value 表示,它的作用是调用属性时可以给内部的字段或引用赋值。

什么是封装

  封装是面向对象的三大特性之一。每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。这样方法和包装在类中,通过类的实例来实现。封装有以下好处:

  • 良好的封装能够减少耦合;

  • 类内部的实现可以自由地修改;

  • 类具有清晰的对外接口;

什么是继承

  继承是面向对象的三大特性之一。对象的继承代表了一种‘is-a’的关系,如果两个对象A 和B ,可以描述为‘B 是A’,则表明B
可以继承A
‘猫是哺乳动物’,就说明了猫与哺乳动物之间是继承与被继承的关系。实际上,继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承都的特性外,还具备自己独有的个性。如果子类继承于父类:

  • 子类拥有父类非private
    的属性和功能(子类从它的父类中继承的成员有方法、域、属性、事件、索引指示器);

  • 子类具有自己的属性和功能;

  • 子类还可以以自己的方式实现父类的功能(方法重写);

  继承是有缺点的,那就是父类变,则子类不得不变。继承会破坏包装,父类实现细节暴露给子类,这其实是增大了两个类之间的耦合性。继承是一种类与类之间强耦合性的关系。

什么是多态

  多态是面向对象的三大特性之一。多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。多态的几点特性:

  • 子类以父类的身份出现;

  • 子类在工作时以自己的方式来实现;

  • 子类以父类的身份出现时,子类特有的属性和方法不可以使用;

  多态的对象的声明必须是父类,而不是子类,实例化的对象是子类,这才能实现多态。多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有贪玩对象继承链最末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态编写调用的。

什么是重构

  重构就是重新构造父类,父类抽象出更多的子类中公共的东西。

什么是抽象类

  C# 允许把类和方法声明为abstract,即抽象类和抽象方法。抽象对象时要注意以下几点:

  • 抽象类不能实例化;

  • 抽象方法是必须被子类重写的方法;

  • 如果类中包含抽象方法,那么类必须定义为抽象类,不论是否还包含其它一般方法;

应该让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,在一个以继承关系形成的等级结构里里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

什么是接口

  接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口把指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。所有接口不能实例化,不能有构造方法和字段;不能有修饰符;不能声明虚拟的或静态的等。实现接口的类必须要实现接口中所有方法和属性。

  抽象类与接口的区别:

  从表象上来说:

  • 抽象类可以给出一些成员的实现,接口却不包含成员的实现;

  • 抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现;

  • 一个类只能继承一个抽象类,但可以实现多个接口等;

  从实质上来说:

  • 类是对对象的抽象;抽象类是类的抽象;

  • 如果行为跨越不同类的对象,可使用接口对于一些相似的类对象,用继承抽象类;

  • 从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确认,预先定义;

什么是集合

  .NET Framework
提供了用于数据存储和检索的专用类,这些类统称集合。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口。

什么是泛型

  泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用途它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。通常情况下,都使用泛型集合,因为这样可以获得类型安全的直接优点而不是从基集合类型派生并实现类型特定的成员。此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于从非泛型基集合类型派生的类型),因为使用泛型时不必对元素进行装箱。

什么是委托和事件

  委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事件时,事件对象通知过程。

  委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。而事件是说在发生其他类或对象关注的事件时,类或对象可通过事件通知它们。

大话设计模式学习笔记——面向对象基础,布布扣,bubuko.com

时间: 2024-10-25 20:54:06

大话设计模式学习笔记——面向对象基础的相关文章

大话设计模式学习笔记

大话设计模式笔记 1. 使用简单工厂模式(使用反射可以解决避免分支判断问题) 注重创建不同的对象 2. 使用策略模式处理 不同的时间应用不同的业务规则 3. 单一原则:一个类仅有一个变化的原因  发现职责并把职责分离 4. 开放-封闭原则:软件实体可以扩展但不能修改  对扩展开放 对更改封闭 开发人员对程序中呈频繁变化的那部分做出抽象 5. 依赖倒转原则: A.高层模块不应依赖底层模块.两者都应该依赖抽象. B.抽象不应该依赖细节,细节应该依赖于抽象.即针对接口编程, 不应针对实现编程. 里氏替

[大话设计模式]学习笔记——简单工厂模式

序 说好的每天进步一点点的,结果工作太忙,一直在加班,都没有学习新东西.我还要进BAT呢. 坚持每天学习新东西. 写代码时,意识到在代码结构上还是有点欠缺.赶紧补上. 纪录对设计模式的认识.小菜变大鸟.进攻BAT. 应用场景: 编写一个计算器控制台程序,要求输入两个数和运算符号,得到结果. 这本书使用C#写的.已有博主用JAVA写出来,参考:http://blog.csdn.net/ghsau/article/details/8163418 常见的做法: 写一个方法封装计算机的功能,我们只需传参

Python学习笔记——面向对象基础

1.类和实例 1.1类的定义 类的定义使用class关键字,其后紧跟类名(通常大写开头),紧接着是(object),object是该类继承的类名,没有就继承object类. 实例化时就是类名+(),有参数需要传入参数. class Student(object): pass bart = Student() 类的属性定义在_init_方法中(相当于java的构造方法),该方法的第一个参数永远是self,在实例化时必须传入相应的参数(除self外) class Student(object): d

《大话设计模式学习笔记》2:策略模式

商场促销示例: 1.策略类: public abstract class CashSuper { public abstract double AcceptCash(double money); } 2.具体策略类(以打折类为例): public class CashRebate:CashSuper { private double moneyRebate; public CashRebate(double moneyRebate) { this.moneyRebate = moneyRebat

设计模式 学习笔记1

2016.4.25 业务是目的:  取火 技术是方法: 钻木取火 架构师 协调业务和技术的关系,把主要业务(目的/问题)分拆成具体的技术实现方案 软件公司里头: 架构师要懂很多技术,还要有商业头脑 所谓“架构” 就是把一个大的系统给拆分,拆散后又能顺利的组装起来. 软件架构包括了:代码架构以及承载代码运行的硬件部署架构 软件开发是需要成本的,要考虑项目难度和开发周期. 技术复杂度太高,掌握这项技术的时间成本和后期维护的难度(后期维护也需要训练新员工来进行维护)就会大大增加. 所以小项目用高技术肯

设计模式学习笔记--访问者(Visitor)模式

写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式:每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案:当我们碰到模式所描述的问题,就可以直接用相应的解决方法去解决这个问题,这就是设计模式. 设计模式就是抽象出来的东西,它不是学出来的,是用出来的:或许你根本不知道任何模式,不考虑任何模式,却写着最优秀的代码,即使以"模式专家"的角度来看,都是最佳的设计,不得不说是"最佳的模式实践",这

java/android 设计模式学习笔记(7)---装饰者模式

这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一,但比继承更加灵活.在现实生活中也可以看到很多装饰者模式的例子,或者可以大胆的说装饰者模式无处不在,就拿一件东西来说,可以给它披上无数层不一样的外壳,但是这件东西还是这件东西,外壳不过是用来扩展这个东西的功能而已,这就是装饰者模式,装饰者的这个角色也许各不相同但是被装饰的对

java/android 设计模式学习笔记(13)---享元模式

这篇我们来介绍一下享元模式(Flyweight Pattern),Flyweight 代表轻量级的意思,享元模式是对象池的一种实现.享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,缓存可共享的对象,来达到对象共享和避免创建过多对象的效果,这样一来就可以提升性能,避免内存移除和频繁 GC 等. 享元模式的一个经典使用案例是文本系统中图形显示所用的数据结构,一个文本系统能够显示的字符种类就是那么几十上百个,那么就定义这么些基础字符对象,存储每个字符的显示外形和其他的格式化数据

Java快速教程--vamei 学习笔记(基础篇)

链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/14/2958654.html java快速教程第2课 方法与数据成员 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/25/2964430.html java快