译: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方法并不是将应用程序考虑成一个将大量数据从一个函 ...
随机推荐
- [Java Web] 5、JSP (1) 注释 & Scriptlet
>_<" 在JSP中支持两种注释的语法操作,一种是显式注释,这种注释客户端是允许看见的,另外一种是隐式注释,此种注释客户端是无法看见的. 显式注释语法: <!-- 注释内容 ...
- [WinAPI] API 12 [获取程序所在的目录、程序模块路径,获取和设置当前目录]
Windows系统提供一组API实现对程序运行时相关目录的获取和设置.用户可以使用GetCurrentDirectory和SetCurrentDirectory获取程序的当前目录,获取模块的路径使用G ...
- C# 两行代码实现 延迟加载的单例模式(线程安全)
关键代码第4,5行. 很简单的原理不解释:readonly + Lazy(.Net 4.0 + 的新特性) public class LazySingleton { //Lazy singleton ...
- HighCharts之2D柱状图
1.HighCharts之2D柱状图源码 column.html: <!DOCTYPE html> <html> <head> <meta charset=& ...
- 转载:python原生态的输入窗口抖动+输入特效
python原生态的输入窗口抖动+输入特效 出处:https://coding.net/u/acee/p/PythonPowerInput/git/blob/master/test_power_inp ...
- centos 防火墙设置
1.安装iptables防火墙 怎么知道系统是否安装了iptables?执行iptables -V,如果显示如: iptables v1.3.5 说明已经安装了iptables. 如果没有安装ipta ...
- paip.基于urlrewrite的反向代理以及内容改写
paip.基于urlrewrite的反向代理以及内容改写 ---------反向代理 RewriteCond %{REQUEST_URI} !=/process.php RewriteRule ^( ...
- CSS入门级学习
css入门学习1:认识CSS 1.1:css简介,css全称是层叠样式表,Cascading style sheets 1.2:css的作用,主要是用于定义html内容在浏览器内的显示样式,如文字大小 ...
- ThinkPHP中关于JS文件如何添加类似__PUBLIC__图片路径
在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:
- [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler
[原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler 1 官方网站:http://memprofiler.com/2 下载地址:http://memprofiler. ...