C#面向对象程序设计 $6 深入理解类.

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

第三讲 面向对象(上).
项目7 面向对象高级.
课程 要求 参考 书目 课程 内容 课程 练习.
四資二甲 第三週作業 物件導向程式設計.
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
第一章 面向对象程序设计.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
7.2 访问控制 —— 公有继承 公有继承练习 //Point.h #ifndef _POINT_H #define _POINT_H class Point { //基类Point类的定义 public: //公有函数成员 void initPoint(float x = 0, float.
類別與物件 Class & Object.
第7单元 面向过程编程—— 继承与多态.
第14章 c++中的代码重用.
第八章 类和对象.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
C#程序设计基础 $5 流程控制.
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
C#程序设计 c# programming 泛型 C#程序设计课程组.
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
第六章 类的扩展与继承.
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
程式設計實作.
C++ with Managed Extensions
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C#程序设计基础 $3 成员、变量和常量.
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
C#面向对象程序设计 $6 深入理解类.
第三章 在C#中实现面向对象的概念.
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
Java程序设计 第9章 继承和多态.
辅导课程六.
C#面向对象程序设计 $7 继承和多态性.
第6章 继承和接口设计 6.1 继 承 6.2 多态性 6.3 抽象类 6.4 接口 6.5 接口在集合排序中的应用.
視窗程式設計 (Windows Programming)
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
$10 可空类型.
C#程序设计基础 第二章 数据类型.
第六章 属性、索引器、委托和事件.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
第三章 C# 基础知识.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
$9 泛型基础.
C#程序设计基础 $3 成员、变量和常量.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++复习2----类与对象.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第四章 类 4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类
第三章 数据抽象.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
辅导课程十五.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
谭浩强编著 C++面向对象程序设计 授课教师:姬广永 学习网站:
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十二.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第6章 继承和多态 伍孝金
Presentation transcript:

C#面向对象程序设计 $6 深入理解类

面向对象的方法学 面向过程的方法 功能与数据分离 自顶向下的分析 基于模块的设计 面向对象的方法 数据+操作对象 对象+类+继承+通信

面向对象的方法学 对象类(抽象化) Shape

面向对象的方法学 对象类(抽象化) 类对象(具体化) Student 范小飞 2年级1班 王艳 2年级3班 刘强 5年级1班

面向对象的方法学 继承 Shape Triangle Rectangle Ellipse Polygon Square Circle

深入理解类 类的成员

类的成员 数据成员 字段 方法成员 普通方法 构造函数和析构函数 属性 索引函数 事件 操作符

类的成员 构造函数 静态构造函数 构造函数的名称与类名相同 构造函数不声明返回类型 构造函数通常是公有的(public修饰符声明),否则(私有/保护)该构造函数不能用于类的实例化 实例构造函数:对象初始化 带参构造函数:按需求初始化 静态构造函数 在程序中第一次用到某个类时,类的静态构造函数自动被调用,而且仅此一次。 静态构造主要用于类的静态字段进行初始化,它不能使用任何限制修饰符。

构造函数示例 //程序清单P6_1.cs: using System; namespace P6_1 { public class ConstructorSample public static void Main() Contact c1 = new Contact(); c1.Output(); Contact c2 = new Contact("赵丽"); c2.Output(); Contact c3 = new Contact("李明", 25, true); c3.Output(); } public class Contact { public string m_name; protected int m_age = 0; protected bool m_gender = false; //默认构造函数 public Contact() m_name = "Unknown"; } //带参数的构造函数 public Contact(string name) m_name = name;

构造函数示例(续) public Contact(string name, int age, bool gender) { m_name = name; m_age = age; m_gender = gender; } //析构函数 ~Contact() { } //普通方法 public void Output() Console.WriteLine("姓名{0} 年龄{1} 性别{2}", m_name, m_age, m_gender ? '男' : '女');

静态构造函数示例 //程序清单P6_2.cs: using System; namespace P6_2 { public class StaticConstructorSample public static void Main() Contact c1 = new Contact("李明"); Contact c2 = new Contact("赵丽"); Contact c3 = new Contact("王强"); } public class Contact { public string m_name; public static int m_objects = 0; public static int m_classes = 0; //构造函数 public Contact(string name) Console.WriteLine("构造对象: " + name); m_name = name; m_objects++; Console.WriteLine("对象数量: " + m_objects); } //静态构造函数 static Contact() Console.WriteLine("构造类"); m_classes++; Console.WriteLine("类数量: " + m_classes);

类的成员 析构函数 关于析构函数的执行在第7章举例 析构函数的名称与类名相同,但在前面需要加一个符号“~” 析构函数不接受任何参数,也不返回任何值 析构函数不能使用任何访问限制修饰符 析构函数通常只进行销毁对象的工作,而不因该执行其他的操作 析构函数不能被继承,也不能被显示地调用 关于析构函数的执行在第7章举例

类的成员 属性 封装对字段的访问 一对特殊方法 get访问器 set访问器 读写控制

属性示例 //程序清单P6_3.cs: using System; namespace P6_3 { public class PropertySample public static void Main() Console.WriteLine("请输入联系人姓名:"); Contact c1 = new Contact(Console.ReadLine()); Console.WriteLine("请输入联系人生日(yyyy-mm-dd):"); c1.Birthday = DateTime.Parse(Console.ReadLine()); //DateTime.TryParse(Console.ReadLine(), out p1.Birthday); Console.WriteLine("{0}的年龄为: {1}", c1.Name, c1.Age); }

属性示例(续) public class Contact { //字段 private string m_name; private DateTime m_birthday; //属性 public string Name get return m_name; } public DateTime Birthday return m_birthday; set m_birthday = value;

属性示例(续) public int Age { get return DateTime.Now.Year - m_birthday.Year; } //构造函数 public Contact(string name) m_name = name;