设计模式——面向对象的三大特性

原创 2015年12月17日 11:38:27

        面向对象的编程方法越来越受到欢迎了,光知道面向对象而不会用岂不是很糟糕,好吧,今天介绍的是它的三个特性,分别是:封装、继承、多态,了解了他的这三大特性,相信我们在以后的运用中会更加的轻松自如。

封装

     先来了解一下它的定义:每个对象都包含它能进行操作所需要的所有信息。例如我们将房子抽象出一个House类来,这个过程就是封装,封装有三个好处,第一、减少耦合,第二、类内部的实现可以自由地修改,第三、类具有清晰的对外接口,综合上述这些优点,就不至于牵一发而动全身了,类封装之后是不是相当于一个密不透风的黑箱子呢?No,不全是,这个可以根据自己的定义来决定是否是一个密不透风的黑屋子,还是可以有阳光进来的房子,说到这里那还需要介绍一下修饰符,如下;

——修饰符

      在编写代码的时候经常会看到修饰符,分别来介绍一下private、public、protected修饰符,private是私有的,如果在一个类A中用它来声明了属性,那么这个属性只能被类A来进行使用,其他类都不可以使用。就像该属性被锁在了类A中一样。public意思为公共的,如果在类A中声明了一个属性,那么这个属性可以被该程序中的所有类使用,意思即可理解为,该属性是大家共有。protected是保护类的,为什么说他是保护类的呢?原因就在于他非亲不认啊!接下来我们会介绍面向对象的第二大特性—继承,如果在父类中声明了一个protected的属性,那么这个属性只是对子类开放访问权,其他的想访问,哼!没门!所以说他是保护类的修饰符。

继承

      继承代表的是“is-a”的关系,如果两个对象A和B,可以描述为‘B是A’则可以说明B可以继承A。继承者是对被继承者的特殊化,因为继承者不仅可以拥有继承者的非private的属性和功能,而且还可以自己扩展,关于继承我们还需要记住三句话,分别是:一、子类拥有父类非private的属性和功能,二、子类具有自己的属性和功能(即可以扩展),三、子类可以以自己的方式实现父类的功能(方法重写)。在上述三条中的第一条为什么不说非private的一切呢?这是因为构造方法是个例外,他构造方法不能被继承只能被调用。调用时使用base关键字,例如,public House():base();

     继承也是有很多的优点,例如,我们将所有子类公共的代码部分放到父类中,如果在没有继承的情况下,我们要是需要修改则可能需要修改很多的类,但是将公共的代码放到父类中,子类继承父类,那么我们需要修改这写代码的时候直接修改父类一处就可以了,我们都知道,重复的代码越多,出错的概率也就越大,所以继承就很有效的降低了这种出错的概率。代码得到了共享就避免了重复。

    事物都是有两面性的,那么继承也是有缺点的,当B、C、D三个子类继承A父类的时候,如果A父类改变,那么B、C、D三个子类不得不变,也就是在公用代码的同时增强了父类和子类之间的耦合,在代码中出现强的耦合是不好的现象,所以继承也是不能乱用的。 

多态

     表示不同的对象可以执行相同的动作,但是需要通过自己的实现代码来执行。例如,猫和狗两个对象都可以叫,但是叫这个动作需要他们用自己的代码去执行。在实现多态时,要想父类可以被子类重写就需要将父类中的公共方法声明为虚方法,例如:

class Animal      //声明一个动物类
{
    .......
    public virtual string Shout()      //定义一个虚方法Shout() 
   {
        return "";
   }

Class Cat:Animal   //子类继承父类
{ 
      public Cat():base()    //继承父类的构造方法
      {  }
       publci Cat(string name):base(name)
      {  }
      public override string Shout()     //重写父类的Shout方法
      { 
           string result="";
           for (int i=0;i<shoutNum;i++)
                result+="喵";
          return "我的名字叫"+name+""+result;   //用自己的方法执行Shout方法后的结果是我的名字叫小猫,喵喵喵喵
        }
}
总结

            



版权声明:本文为博主原创文章,未经博主允许不得转载。

Java面向对象设计模式(三)——单例模式

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这...

面向对象设计的——三大基本特性和五大基本原则

导言:无论是初学面向对象设计的基本理论,还是参加各种与C++相关的笔试时,面向对象的三大基本特性基本上是必考的。过去只是单纯地将三大特性——封装、继承和多态背了下来。当真正在项目中,需要用C++进行开...

《设计模式》学习笔记1——七大面向对象设计原则

前言根据这一次的学习计划,系统学习设计模式之前,先系统学习和理解设计原则。面向对象设计原则有如下几类。原则一:单一职责原则这是面向对象最简单的原则,对于定义,引用书中所说: 单一职责原则(Sing...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式——面向对象的三大特性
举报原因:
原因补充:

(最多只允许输入30个字)