C# VS 面向对象基础(一)
面向对象(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 面向对象基础(一)的更多相关文章
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- MYSQL、PHP基础、面向对象基础简单复习总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- 从零开始学Python第六周:面向对象基础(需修改)
标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- python面向对象基础
面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...
- java基础学习05(面向对象基础02)
面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
随机推荐
- SPOJ 130 - Rent your airplane and make money(dp+优化)
题意:有n列预定航班,从st时刻开始出发,飞行时间为d,花费为p,且同一时刻不能有两个航班,求最大的花费 对航班的开始时间(或结束时间)按升序排序,从后往前找到对应结束时间所在的航班位置(如按结束时间 ...
- CSS入门教程——定位(positon)
CSS入门教程——定位(positon) CSS定位在网页布局中是起着决定性作用. 定位 CSS的定位功能是很强大的,利用它你可以做出各种各样的网页布局.本节就介绍一些CSS常用的定位语句. 1. ...
- autoresizing代码实现
主要解决父子控件之间的布局关系: /* Flexible 灵活的,自由的 typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) ...
- ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered
正如以下msdn论坛所述,Microsoft.Jet.OLEDB.4.0只有32bit,所以我们必须compile application to x86 platform. http://social ...
- CAA调试
在需要调试的Module(*.m)上右键,选择属性,命令位置选择你的framework目录 路径选择对应工程目录下的\intel_a(或者Win64 -- 64位机器) 然后就可以尽 ...
- 求double类型的n次方
剑指offer系列面试题 package com.study; /* * 数值的整数次方 * 要求:实现函数 double Power(double base, int exponent) 求base ...
- Javascript-数据类型、类型转换
typeof 判断数据类型: var n = 1; var t = "echo"; var fn = function() {} var arr = [1,2,3]; typeof ...
- eclipse优化配置
-startup plugins/org.eclipse.equinox.launcher_1..jar --launcher.library plugins/org.eclipse.equinox. ...
- 在右键添加Cmder here选项,添加启动Cmder的快捷键
右键菜单添加“Cmder here” 打开cmder,在其中输入: cmder /register user 或 cmder /register all 即可 设置启动cmder的快捷键 右键 C ...
- docker 使用Data Volume 共享文件
Adding a data volume You can add a data volume to a container using the -v flag with the docker run ...