C#学习第四弹之封装、继承和多态
2015-04-05 16:59
423 查看
OOP的三大支柱:(1)封装 (2) 继承 (3)多态
C#中的封装,这里说明一下静态类和属性。
静态类:静态的类,不能实例化,而且是密闭的,不能从它派生类型,也无构造方法。
静态类的作用:由于C#中不允许有全局方法,而有时候却恰恰需要一些工具类来实现一些比如数学计算的事情,这个时候静态类便派上了用场。
属性及其作用:罗凯老师在Java课上对属性的解释是“Property: something that holds data“。一般而言,客户希望在不使用方法的情况下访问对象的状态;但是类的设计者却想将类的状态隐藏在类成员中而让客户只能通过方法间接访问对象的状态。而属性满足了这两个目的: (1)为客户提供简单的“类似成员变量”的接口(2)同时为设计者提供了“使用方法来实现”的OO设计所必须的数据隐藏性。
属性写法如下:
继承和多态总是分不开。
和C++一样,在C#中需要实现多态的函数需要声明virtual,且在派生类中需要声明override。
View Code
输出结果应该是:
C#中的封装,这里说明一下静态类和属性。
静态类:静态的类,不能实例化,而且是密闭的,不能从它派生类型,也无构造方法。
静态类的作用:由于C#中不允许有全局方法,而有时候却恰恰需要一些工具类来实现一些比如数学计算的事情,这个时候静态类便派上了用场。
属性及其作用:罗凯老师在Java课上对属性的解释是“Property: something that holds data“。一般而言,客户希望在不使用方法的情况下访问对象的状态;但是类的设计者却想将类的状态隐藏在类成员中而让客户只能通过方法间接访问对象的状态。而属性满足了这两个目的: (1)为客户提供简单的“类似成员变量”的接口(2)同时为设计者提供了“使用方法来实现”的OO设计所必须的数据隐藏性。
属性写法如下:
using System; class MyClass { public int property; public int Property { get { return this.property; } set { this.property = value; } } static void Main(string[] args) { MyClass Object = new MyClass(); Object.Property = 5; Console.WriteLine(Object.Property); } }
继承和多态总是分不开。
和C++一样,在C#中需要实现多态的函数需要声明virtual,且在派生类中需要声明override。
using System; public class A { public virtual void Dance() { Console.WriteLine("A can dance"); } } public class B: A { public override void Dance() { Console.WriteLine("B can dance"); } } public class C: B { public new virtual void Dance() { Console.WriteLine("C can dance"); } } public class D: C { public override void Dance() { Console.WriteLine("D can dance"); } } class Test { static void Main(string[] args) { A a = new D(); A b = new B(); C c = new D(); A d = new A(); a.Dance(); b.Dance(); c.Dance(); d.Dance(); } }
View Code
输出结果应该是:
相关文章推荐
- C# 学习历程——类的封装,继承与多态
- 学习C# 继承 封装 多态
- 【C#学习】——封装、继承、多态
- 学习C#的一些笔记(关于继承与多态,static关键字)
- 学习java第三天---------------封装、继承和多态
- 关于C#面向对象三个特征:继承,封装,多态的说明
- Java学习第四课 类的继承与多态特性
- C#的封装、继承和多态
- 关于C#面向对象三个特征:继承,封装,多态的说明
- 《程序员的第一年》---------- 复习一下C#的【封装 多态 继承 -----简单计算器源码实例】
- 浅谈学习C++时用到的【封装继承多态】三个概念
- C#学习——继承接口多态
- Java学习--封装、继承、多态
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
- C# 面向对象编程之封装、继承、多态 <思维导图>
- C#封装、多态、抽象、接口、匿名方法等学习
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
- 嵌入式开发之C++基础学习笔记4--面向对象封装继承多态
- Java学习第六课--面向对象的三大特性(封装、继承和多态)
- 浅谈学习C++时用到的【封装继承多态】三个概念