面向对象设计三大特性

面向对象设计三大特性

一、封装

良好的封装能够减少耦合;类内部的实现可以自由地修改;类具有清晰的对外接口。比如建立一个猫的类,再建立一个狗的类,这样也算封装,只是会出现大量相似代码。

二、继承

继承的出现是因为对象类中出现过多重复代码,为解决该问题而建立父类,将这部分代码放进父类中,由子类继承。子类继承父类的所有特性,同时可以定义新的特性。

如果子类继承于父类,子类拥有父类非private的属性和功能;子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;子类还可以以自己的方式实现父类的功能(方法重写)。

class Animal                              //父类
{
    protected string name = "";          //字段,修饰符意味子类可以继承
    public Animal(string name)           //构造函数
    {
        this.name = name;
    }

    protected int shoutNum = 3;         //属性及其设置方法

    public int ShoutNum
    {
        get
        {
            return shoutNum;
        }
        set
        {
            shoutNum = value;
        }
    }

    public virtual string Shout()         //父类方法,注意增加的虚拟修饰符代表该方法允许被子类重写
    {
        return "";
    }
}

class Cat : Animal                                        //子类,继承自父类
{
    public Cat(string name) : base(name)                 //继承父类的构造函数,构造函数不能被继承,只能被调用
    { }

    public override string Shout()                       //重写父类的方法
    {
        string result = "";
        for (int i = 0; i < shoutNum; i++)
            result += "喵 ";

        return "我的名字叫" + name + " " + result;
    }
}

继承的优点:代码共享,避免重复,可使得修改或扩展继承而来的实现都较为容易;

继承的缺点:父类变子类变,继承会破坏包装,父类实现细节暴露给子类,显然是一种类与类之间强耦合的关系。

总结:继承适用情况是两个类具备‘is-a’的关系时,即完全包含。

三、多态

多态表示不同的对象可以执行相同的动作,但要通过自己的实现代码来执行,第二节中的父类和子类的重写方法即是多态的表示。

virtual关键字可以使用的范围:属性、事件、方法和索引器,但是字段不能虚拟。子类可以选择使用override关键字重写父类的方法。

private void button1_Click(object sender, EventArgs e)                //客户端调用
        {
            Animal cat ;                                              //声明时要声明父类
            cat =  new Cat("小咪");                                     //实例要实例为子类
            cat.ShoutNum = 5;                                          //执行子类重写后的方法
            MessageBox.Show(cat.Shout());
        }

四、衍生:重构

重构都是在程序编写过程中发现大量重复代码,因而对现有代码进行重新编写,提取重复部分融入或新建父类的。在父类中需要子类完全继承的方法不要添加virtual关键字,使其成为普通方法,而需要子类自行定义的方法定义成虚方法。

时间: 2024-10-26 14:08:14

面向对象设计三大特性的相关文章

二、面向对象设计三大特性-----《大话设计模式》

一.封装 良好的封装能够减少耦合:类内部的实现可以自由地修改:类具有清晰的对外接口.比如建立一个猫的类,再建立一个狗的类,这样也算封装,只是会出现大量相似代码. 二.继承 继承的出现是因为对象类中出现过多重复代码,为解决该问题而建立父类,将这部分代码放进父类中,由子类继承.子类继承父类的所有特性,同时可以定义新的特性. 如果子类继承于父类,子类拥有父类非private的属性和功能:子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能:子类还可以以自己的方式实现父类的功能(方法重写). c

5 面向对象的三大特性

面向对象的三大特性是什么?(封装.继承.多态) 封装: 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴露在外面的时钟表面,给外界提供展示以及接口.@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 封装主要体现在:实例变量.对象方法.类方法的封装 set方法 在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public.@protected等关键字修饰 ,而是使用Set方法来为对象

黑马程序员——OC面向对象的三大特性

一.面向对象的三大特性:封装(成员变量).继承和多态 1. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2. set方法 1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2) 命名规范: ? 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写 ? 形参名称不要跟成员变量同名 3

什么是php面向对象及面向对象的三大特性

什么是面向对象? 面向对象编程,也就是我们常说的OOP,其实是面向对象的一部分.面向对象一共有3个部分:面向对象分析(OOA).面向对象设计(OOD).面向对象编程(OOP).我们现在将要学习的就是面向对象的编程,而面向对象编程中两个首要了解的也是很重要的概念就是类和对象. 类与对象 万物皆对象,世间的万物我们都可以看成是对象,因为他们都有各自的属性.比如:人有身高,体重,年龄,性别等等这些属性,也可以唱歌,跳舞,跑步等等行为.如果把人看成一个类的话,那么身高,体重,年龄,性别这些就是人这个类的

面向对象的三大特性

面向对象的三大特性: 封装, 继承, 多态 封装 封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节 继承: 子类拥有父类的属性和方法, 任何一个类都继承 Object (不管是java定义的还是自己定义的)::: Object.finalize()-->调用这个方法来释放资源: 多态(执行期间(执行期间-->你在控制台上写 java 类名 运行某个文件的时候叫执行期间)的动态绑定, 池绑定): 重载

接口和抽象类的对比,面向对象的三大特性和四大特性

Day09_SHJavaTraing_4-14-2017 一.接口和抽象类的对比1.相同点    ①都位于继承的顶端,用于被其他类实现或继承    ②都不能直接实例化对象    ③都包含抽象方法,其子类都必须覆写这些抽象方法2.区别 2.1从声明上: ①抽象类是一个类,需要使用关键字class声明        ②接口不是一个类,使用关键字interface声明 2.2从能够书写的成员上看: ①抽象类可以书写类中的所有成员 ②接口中只能书写成员变量和抽象函数(从JDK8开始,接口中可以有实现的函

关情纸尾-----面向对象的三大特性

面向对象的三大特性 .封装 .继承 .多态 一.封装 1.set方法 (1)作用:提供一个方法给外界设置成员变量,可以在方法里面对参数进行过滤 (2)命名规范: 方法都是以set开头,而且后面要跟上成员变量名,成员变量名的首字母必须是大写 (3)形参名称不要和成员变量同名 (4)返回值一定是void (5)一定要接收一个参数,而且参数类型和成员变量类型一致 2.get方法 (1)作用:返回内部的成员变量 (2)命名规范:方法的名称一般就跟成员变量同名 (3)一定有返回值,并且返回值类型和成员变量

面向对象的三大特性之一【封装】

类的成员属性可以封装,成员方法也可以封装,所谓封装就是用private关键词来修饰属性和方法,被封装后的属性和方法就变为私有属性和私有方法,这样的私有属性和方法不能被外部对象直接访问和使用,只能在类的内部使用,也就是说只能用$this访问到,私有方法供内部的其他方法调用,如果想让外部new出来的对象可以访问私有属性,可以在类里声明一个公共方法,一般不需要自己声明,可以用魔术方法__set和__get做到,魔术方法在需要的时候会自动调用,魔术方法都有由两个下划线组成的前缀.看下面的例子 class

面向对象的三大特性,五大基本原则

面向对象的三大特性: (1)继承 (2)封装 (3)多态 五大基本原则: (1)单一原则:一个类,最好只做一件事,只有一个引起它的变化: (2)开闭原则:对拓展开放,对修改封闭: (3)里氏替换原则:子类必须能够替换其基类.这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础. (4)依赖倒置原则:依赖于抽象.具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象:抽象不依赖于具体,具体依赖于抽象. (5)接口隔离原则:使用多个小的