面向对象(Object Oriented,OO)的相关知识学习了很多了,这篇博客我从C#实现面向对象的理论来做个初步的总结。

在这篇博客中,我通过一个例子讲述了,面向对象中,类,类的实例化,构造方法,方法重载,类的属性,封装和继承,这些概念的代码实现。首先我们再次了解这些名词的相关知识。

类:就是具有相同属性和功能的对象的集合。

构造方法:就是对类进行初始化。如果不编码则系统将默认生成空的构造方法。

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

属性:适合于以字段的方式使用方法调用的场合,这里字段是存储类要满足其设计所需要的数据。

封装:每个对象都包含他能进行操作的所有信息。封装可以减少耦合,类的内部可以修改,可以使类具有清晰的对外接口。

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

下边我们看这个例子来对上边的知识点进行深一步理解:

 [csharp] view plaincopyprint?
<span style="font-size:18px;">namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)//单击猫叫按钮的事件方法
{
Cat cat = new Cat("咪咪"); //类的实例化
cat.ShoutNum1 = ; MessageBox.Show(cat.shout());
} private void button2_Click(object sender, EventArgs e) //单击狗叫的按钮的事件方法
{
Dog dog = new Dog("旺财");//这里只是简单的调用方法,即可实现目的,体现了封装的特性
dog.ShoutNum1 = ;
MessageBox.Show(dog.shout());
} }
class Animal//声明一个父类 {
protected string name = "";//声明类的的私有字符串变量name public Animal(string name)//定义cat类的构造方法,参数是输入一个字符串
{
this.name = name;//将参数赋值给私有变量
} public Animal()//将构造方法重载
{
this.name = "无名";
} protected int shoutNum1 = ;//声明一个内部字符段,默认值3,
public int ShoutNum1//属性的设置
{
get//get表示外界调用属性的值
{
return shoutNum1;
}
set//set表示外界可以给属性的赋值
{
shoutNum1= value;
}
} } class Cat : Animal//子类猫,使用了继承的机制,继承了Animal父类
{
public Cat(): base()
{ }
public Cat(string name)
: base(name)
{ }
public string shout()
{
string result = "";
for (int i = ; i < shoutNum1; i++)
{
result += "喵";
}
return "我的名字叫" + name + " " + result;
} }
class Dog : Animal//子类狗,继承父类Animal
{
public Dog()
: base()
{ }
public Dog(string name)
: base(name)
{ }
public string shout()
{
string result = "";
for (int i = ; i < shoutNum1; i++)
{
result += "汪";
}
return "我的名字叫" + name + " " + result;
} } }</span>

看里边的注释即非常清楚,下边我们看看输出的结果:

C# VS 面向对象基础(一)的更多相关文章

  1. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  2. MYSQL、PHP基础、面向对象基础简单复习总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  3. 从零开始学Python第六周:面向对象基础(需修改)

    标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  4. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  5. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  6. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  7. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  8. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  9. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  10. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

随机推荐

  1. 使用JUnit单元测试入门

    一.JUnit是什么? JUnit是一个开发源代码的java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).JUnit最初是由Erich Gam ...

  2. Oracle SQL函数之数学函数

    Oracle SQL函数之数学函数 ABS(x) [功能]返回x的绝对值 [参数]x,数字型表达式 [返回]数字 SQL> SELECT ABS(),ABS(-) FROM DUAL; ABS( ...

  3. sql必知必会(第四版) 学习笔记二 视图

    本书用到的几个表的建表sql语句如下: --销售产品供应商 CREATE TABLE Vendors ( vend_id varchar(20) not null, vend_name varchar ...

  4. achartengine 实现平行线 动态数据 x轴动态移动

    achartengine做平行线的时候经常会遇到: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 at java.ut ...

  5. Core Bluetooth 概述 【官方文档翻译】

    Core Bluetooth 框架在Mac和iOS平台,为配备了低功耗蓝牙无线技术的设备提供了进行通信所需要的类.例如,您的应用程序可以发现,探索,和低功耗的外围设备进行交互,如心率监视器.数字温控器 ...

  6. BestCoder 2nd Anniversary 1002 Arrange

    排除所有不符合条件后根据当前位置上下界计算, 由于前面取的数肯定在之后的区间内,所以去掉已取的个数即可. #include <iostream> #include <cstdio&g ...

  7. poj 3744 矩阵 高斯消元

    着实被批评了一下,自己的数论确实太烂了. 题意:一条路上,有n个炸弹,给出每个炸弹的位置,一次走一步的概率是p,走两步的概率是1-p.求安全走完的概率. 定义dp[i] = dp[i-1]*p + d ...

  8. 百度地图坐标转换API和地图API

    利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  9. Android 获取图片真实宽高

    Resources res = mContext.getResources(); BitmapFactory.Options opts = new BitmapFactory.Options(); o ...

  10. eclipse优化配置

    -startup plugins/org.eclipse.equinox.launcher_1..jar --launcher.library plugins/org.eclipse.equinox. ...