译:C#面向对象的基本概念 (Basic C# OOP Concept) 第二部分(封装,抽象,继承)
6.封装
封装就是对外部类隐藏成员或变量。我已经说过房子的保安仅仅被限制在房子的入口处,不需要知道屋内发生了什么。房主对保安隐藏了屋内所发生的任何事,以便更安全。隐藏和限制就被称为封装。
例如我们有两个类,一个是”Houseclass”另一个是”houseSecurityClass”。
我们可以看到所有的成员都包裹在公开的类houseSecurityClass里,所以Houseclass类的对象能够访问 houseSecurityClass里的任何成员。但是Houseclass有2个成员,一个public一个private。private类不能够被外部的类所访问。
public class houseSecurityClass
{
public int noofSecurity;
public String SecurityName = String.Empty;
} public class Houseclass
{
private int noofLockerinHosue = ;
public string OwnerName = String.Empty;
}
7.抽象化
抽象就是显示和分享一些共同的信息给用户。接着讨论屋子的例子。屋子里有仆人,能够进入任何房间,做清洁和其他的事情。房主可以给仆人所有或者部分进入卧室的权限。我们可以看出,程序中private的成员和方法都是仆人所没有的权限,而public的成员和方法都是仆人所拥有的权限。
public class HouseServerntClass
{ private int SaftyLoackerKeyNo = ;
public String roomCleanInstructions = "Clean All rooms"; private void saftyNos()
{
Console.WriteLine("My SaftyLoackerKeyNo is" + SaftyLoackerKeyNo);
} public void roomCleanInstruction()
{
Console.WriteLine(roomCleanInstructions);
} }
8.继承
继承就是为了代码的重用。在protected internal访问修饰符章节我们已经看到继承的例子。继承就是在派生类中能够访问父类的所有公开的方法和变量等。
单层次继承--一个派生类只继承一个父类。
public class baseClass
{
private void privateMethod()
{
Console.WriteLine("private Method");
} public void publicMethod()
{
Console.WriteLine("This Method Shared");
}
}
public class DerivedClass : baseClass
{
static void Main(string[] args)
{
DerivedClass obj = new DerivedClass();
obj.publicMethod();
//obj.privateMethod(); //This will be error as private method can not be accessed in Derived Class
} }
注意:有时候大家可能不清楚什么是基类,什么是派生类。基类就是超级类,派生类就是继承了基类。
下面就是一个继承的例子,基类GuestVist,派生类HouseOwnerClass。派生类HouseOwnerClass继承自GuestVisit类。
HouseOwnerClass.Here HouseOwnerClass class inherits the base class of GuestVist
class GuestVist
{
public void Guestwelcomemessage()
{
Console.WriteLine("Welcome to our Home");
}
public void GuestName()
{
Console.WriteLine("Guest name is: Shanu");
} }
class HouseOwnerClass : GuestVist
{
static void Main(string[] args)
{
HouseOwnerClass obj = new HouseOwnerClass();
obj.Guestwelcomemessage();
obj.GuestName();
Console.ReadLine();
}
}
多层次继承--不止一个派生类的例子。下面的例子中我们可以看到baseclass派生了DerivedClass1,而DerivedClass1派生了DerivedClass2。因此DerivedClass2可以访问DerivedClass1和baseclass两个类的公开成员和方法。
public class baseClass
{
private void privateMethod()
{
Console.WriteLine("private Method");
} public void publicMethod()
{
Console.WriteLine("This Method Shared");
}
}
public class DerivedClass1 : baseClass
{
public void DerivedClass1()
{
Console.WriteLine("Derived Class 1");
}
}
public class DerivedClass2 : DerivedClass1
{
static void Main(string[] args)
{
DerivedClass2 obj = new DerivedClass2();
obj.publicMethod();
obj.DerivedClass1();
//obj.privateMethod(); //This will be error as private method can not be accessed in Derived Class
} }
多重继承:
.Net支持多重继承吗?NO
一个类不能支持多重继承。
什么是多重继承?多重继承就是 一个类继承多个基类。就是一个派生类继承多于1个基类。
c#使用了多重继承会发生什么?
继续来看屋子的实例。下面的例子中我们有一个派生类ouseOwnerClass,两个基类“GuestVist” 和“FriendsandRelationsClass”.
现在家里来了两个人一个客人,一个朋友。因此我们写的3个类中派生类继承了2个类。当我用c#写一个多重继承,编译器会给出警告信息但是可以执行代码。警告信息是“Expected and interface”。

那么怎样才能支持多重继承呢?
答案是使用接口,接口支持多重继承。
~~~~今天就到这里,洗澡睡觉咯
译:C#面向对象的基本概念 (Basic C# OOP Concept) 第二部分(封装,抽象,继承)的更多相关文章
- 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)
译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...
- 译:C#面向对象的基本概念 (Basic C# OOP Concept) 第三部分(多态,抽象类,虚方法,密封类,静态类,接口)
9.多态 Ploy的意思就是多于一种形式.在文章开始,方法那一章节就已经接触到了多态.多个方法名称相同,而参数不同,这就是多态的一种. 方法重载和方法覆盖就是用在了多态.多态有2中类型,一种是编译时多 ...
- 【转】Basic C# OOP Concept
This Article will explain a very simple way to understand the basic C# OOP Concept Download ShanuBas ...
- C#面向对象(OOP)入门—第二天—多态和继承(继承)
介绍: 第一天的内容主要是不同情形下的方法重载.这一部分则主要讲面向对象中继承的概念.首先用一个要点图形来定义继承. 继承 一个简单的例子: ClassA: class ClassA:ClassB { ...
- 面向对象。OOP三大特征:封装,继承,多态。 这个讲的是【封存】
class Ren { private $name; private $sex; private $age; //年龄必须在18-50之间 function __constuct($v) { $thi ...
- C#面向对象(二):封装和继承
前文链接:C#面向对象(一):明确几个简单的概念作为开胃菜 面向对象开发有三大特性(特点 / 特征) : 封装, 继承, 多态.我们今天主要讨论封装和继承,多态会在下篇中讨论. 一.封装: 所谓封装, ...
- [python 译] 基于面向对象的分析和设计
[python 译] 基于面向对象的分析和设计 // */ // ]]> [python 译] 基于面向对象的分析和设计 Table of Contents 1 原文地址 2 引言 2.1 ...
- python基础(八)面向对象的基本概念
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢逆水寒龙,topmad和Liqing纠错 Python使用类(class)和对 ...
- PHP从零开始-笔记-面向对象编程的概念
面向对象变成的概念 需要一一种不同的方式来考虑如何构造应用程序.通过对象可以在对应用程序所处理的显示任务.过程和思想进行编码是,实施更贴切的建模.OOP方法并不是将应用程序考虑成一个将大量数据从一个函 ...
随机推荐
- django上传文件
template html(模板文件): <form enctype="multipart/form-data" method="POST" action ...
- vscode中启动浏览器的tasks.json
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tas ...
- IOS设计模式的六大设计原则之开放-关闭原则(OCP,Open-Close Principle)
定义 一个软件实体(如类.模块.函数)应当对扩展开放,对修改关闭. 定义解读 在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的.那么如何应对需求变化的情况?这就是开放-关闭原 ...
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- 爬虫神器xpath的用法(四)
使用xpath多线程爬取百度贴吧内容 #encoing=utf-8 from lxml import etree from multiprocessing.dummy import Pool as T ...
- js异步加载的三种解决方案
默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页 ...
- PHP cURL模块
简介: cURL是利用URL语法在命令行方式下工作的文件传输工具,目前苹果机器已经内置了cURL.cURL是一个综合性的传输工具,对HTTP.FTP等协议提供了广泛的支持,它甚至可以实现迅雷.快车等下 ...
- VS2015 Apache Cordova第一个Android和IOS应用
前言 本人个人博客原文链接地址为http://aehyok.com/Blog/Detail/75.html. 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehy ...
- iOS解析Server端返回JSON数据
在做quhao APP架构时,后台Server端使用了Java,提供WebService,而iOS和Android作为移动客户端.在做数据交互时,Server端返回JSON格式数据.由于iOS SDK ...
- http协议读书笔记2-连接管理
一.http是如何使用tcp连接的? http连接本质就是tcp连接和一些使用连接的规则.所有的http通讯都是由tcp/ip来承载的.tcp/ip是全球计算机及网络设备都在使用的一种常用的分组交换的 ...