日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2008-6-15<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
学习内容:接口,程序的运行过程
遗留问题:
学习总结:
接口与抽象类:
1.      类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类。接口只是一个行为的规范或规定。接口表述的是“我能做”(Can-do),抽象类更多的是定义在一系列紧密相关的类间(IS-a),而接口大多数是关系疏松但都实现某一功能的类中
2.      接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.      一个类一次可以实现若干个接口,但是只能扩展一个父类。
4.      抽象类实现了OOP中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的由子类去实现。
5.      好的接口定义应该是具有专一功能性啊,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口中的一个功能,而不得不去实现接口中的其他方法,就叫接口污染。
6.      如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中的方法。
接口与抽象类:
1.      抽象类用于部分实现一个类,再由用户按需求对其进行不同的扩展和完善;接口只是定义一个行为的规范或规定。
2.      抽象类在组件的所有实现间提供通用的已实现功能;接口创建在大范围全异对象间使用的功能。
3.      抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
4.      抽象类主要用于设计大的功能单元;而接口用于设计小而简练的功能块。
模拟场景:教师考取驾驶执照,那么他属于教师类还是司机类呢?
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    interface IDrivingLicenceB
    {
        void getLicence();
    }
    interface IDrivingLicenceA:IDrivingLicenceB
    {
        new void getLicence();
    }
    class Teacher : IDrivingLicenceA
    {
        public void getLicence()
        {
            Console.WriteLine(" 老师考取了A类驾驶执照" );
        }
    }
    class Student : IDrivingLicenceB
    {
        public void getLicence()
        {
            Console.WriteLine(" 学生考取了B类驾驶执照" );
        }
    }
    class Program
    {
        static void DriveCar(string name, object o)
        {
            IDrivingLicenceB dl = o as IDrivingLicenceB;
            if (dl != null)
            {
                Console.WriteLine(name + " 开动了卡车" );
            }
            else
            {
                Console.WriteLine(name + " 不能开卡车" );
            }
        }
        static void DriveBus(string name, object o)
        {
            IDrivingLicenceA dl = o as IDrivingLicenceA;
            if (dl != null)
            {
                Console.WriteLine(name + " 开动了公共汽车" );
            }
            else
            {
                Console.WriteLine(name+" 不能开公共汽车" );
            }
        }
        static void Main(string[] args)
        {
            Teacher t = new Teacher();
            DriveCar(" 教师" , t);
            DriveBus(" 教师" , t);
            Student s = new Student();
            DriveCar(" 学生" , s);
            DriveBus(" 学生" , s);
        }
    }
}
程序功能:实现IComparable接口,来实现排序
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
    class Student:IComparable// 实现系统自带的IComparable接口
    {
        private string name;
        private int age;
        public Student(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        public int CompareTo(object right)
        {
            if (!(right is Student))
                throw new ArgumentException(" 参数类型必须为student类型" );
            return name.CompareTo(((Student)right).name);
        }
        public override string ToString()// 如果不重写此方法将返回的是类型
        {
            return name;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student[] arr =new Student[5];
            arr[0] = new Student(" 张三" , 5);
            arr[1] = new Student(" 李四" , 3);
            arr[2] = new Student(" 王五" , 4);
            arr[3] = new Student(" 赵六" , 2);
            arr[4] = new Student(" 钱七" , 1);
            Array.Sort(arr);// 调用Array类的静态方法Sort
            foreach (Student i in arr)
                Console.WriteLine(i);
        }
    }
}
.NET Framework ( 代码库、通用类型系统 CTS 、 CLR)
    编译
C# ———— > 程序集 (.exe 、 .dll[MSIL]) 、元信息 [ 数据信息 ] 、可选资源 [ 图片、声音 ])
             |                 |
             |                 (Microsoft Intermediate Language 微软中间语言 )
             |
             | JIT 编译 (Just-In-Time 仅在需要时才编译 MSIL)
             |
             —— > 机器代码 < ———— .NET CLR (Common Language Runtime 公共语言运行库 )
                               运行      /   \
                                       /     \
                                     托管   非托管
                                    (C#)     (C++)
总结:
一、用 C# 等 .NET 兼容语言编写代码
              编译
二、       C# ———— > 程序集
              JIT 编译
三、   程序集————— > 机器代码
               运行
四、   托管 CLR ———— > 机器代码

转载于:https://blog.51cto.com/xiaoshu838/89458

看陈广老师c#参考视频总结(第十篇 完)相关推荐

  1. 看陈广老师c#参考视频总结(第三篇)

    日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> ...

  2. 看陈广老师c#参考视频总结(第六篇)

    日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> ...

  3. 看陈广老师c#参考视频总结

    http://xiaoshu838.blog.51cto.com/433568/89243 转载于:https://blog.51cto.com/1724802/592450

  4. 看陈广老师c#参考视频总结(第八篇)

    日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> ...

  5. 看陈广老师c#参考视频总结(第二篇)

    日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> ...

  6. 看陈广老师c#参考视频总结(第四篇)

    日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> ...

  7. 陈广老师C#参考视频 方法的参数传递 总结

    方法的参数传递有三种: 1.值参数 方法名称(参数类型,参数名称) 2.引用参数 方法名称(ref 参数类型,参数名称) 3.输出参数 方法名称(out  参数类型,参数名称) 运行结果: i=0 j ...

  8. 陈广老师 C#语言参考视频打包下载地址

    陈广老师 C#语言参考视频下载地址 http://dl.getdropbox.com/u/97203/chenguang.zip 转载于:https://www.cnblogs.com/ycxyyzw ...

  9. C#语言俄罗斯方块源代码(据陈广老师视频)

    以下是我根据陈广老师视频,自己敲的代码,日后会不断更新. using System; using System.Collections.Generic; using System.ComponentM ...

最新文章

  1. [Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]
  2. docker-compose 配置kafka_Docker Compose 引用环境变量
  3. 《C Primer Plus 第五版》读书笔记
  4. 复古海报设计灵感配色,“一见即知”的感觉
  5. 只需三种手段,将传统的网站的性能提高 24%!
  6. ubuntu 1610本地安装wordpress
  7. html设置在父元素底部对齐,如何将div对齐到父元素的底部
  8. spring mvc ajax登录验证,vuejs (前端项目) + spring mvc(后台项目),每次ajax请求都是新的session Id...
  9. 论文常用出图软件(Matlab,XMind,Viso,ppt)以及格式选择(eps,svg,tif,png)
  10. matlab 模的平方,RSA模重复平方算法小示例
  11. Python E化-爬虫VOA-下载MP3
  12. python项目源码 日程管理_怎么用python写作息时间安排呢?
  13. 阿里云和Azure ICON图标矢量素材分享
  14. AI:人工智能领域之国内外人工智能产业应用图谱应用层/基础层详解—AI八大应用领域之医疗/家居/驾驶/零售/城市/教育/金融/交通、(AI三大基础(算法【计算机视觉/自然语言处理/机器学习、科研院所/
  15. 云服务厂商人才空心化隐忧
  16. 陆小曼给徐志摩的挽联
  17. 试看5分钟视频python_不会Python吗?几分钟看完资深程序员给你的Python入门指南...
  18. 国内的云服务器哪家值得推荐?
  19. K均值聚类的理解和实现
  20. Hank的无线802.11学习笔记--2

热门文章

  1. 数据分析项目实战之淘宝女装店铺销售分析(一)数据获取篇
  2. 文本识别-SVTR论文解读
  3. iOS开发技能树之C语言-函数
  4. 十二个“一”的扩展延伸文艺创作
  5. elementUI resetFields无效原因
  6. The Twelfth Of Word-Day
  7. 同洲电子控股股东质押股权濒临爆仓
  8. 形式参数和实际参数是什么鬼?
  9. 从噱头到实用,巡检机器人“上岗”助运维
  10. cinder镜像缓存