Net基础复习

今天在云和学院复习了之前学的C#知识

面向对象

练习:磁盘上有不同的文件,比如:.txt文本文件、.doc视频文件、.xls电子表格。要求:编写一个控制台程序,用户输入一个带后缀名的文件,将该文件名传递到一个方法中,该方法中根据用户输入的文件名后缀,返回一个对应的文件对象。提示:编写不同的类模拟不同的文件、为不同的文件类创建统一的父类、使用简单工厂实现。

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入文件名:");
            string strname=Console.ReadLine();
            factory fa = new factory();
            AbFile af = fa.CreateFile(strname);
            af.GetFileName();
            Console.ReadKey();
        }
    }
}
abstract  class AbFile
    {
      abstract public void GetFileName();
    }
class doc:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是doc文件,用Word文档打开");
        }
    }

 class txt:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是一个txt文件,用记事本打开");
        }
    }

 class xls:AbFile
    {
        public override void GetFileName()
        {
            Console.WriteLine("我是xls文件,用Exel表打开");
        }
    }

 class factory
    {
        public AbFile CreateFile(string filename)
        {
            string[] str = filename.Split(‘.‘);
            switch(str[1])
            {
                case "txt":return new txt();

                case "doc": return new doc();
                default: return new xls();

            }
        }
    }

虚方法、抽象方法

•关于虚方法需要注意的几点:

•1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual

•2.虚方法在父类中必须有实现,哪怕是空实现。

•3.虚方法子类可以重写(override),也可以不重写

•关于抽象方法注意的几点:

•1.需要用abstract关键字标记

•2.抽象方法不能有任何方法实现。

•3.抽象成员必须包含在抽象类中。

•4.由于抽象成员没有任何实现,所以子类必须将抽象成员重写。

•5.抽象类不能实例化,

•抽象类的作用:抽象类的作用就是为了让子类继承。

•6.抽象类中可以包括抽象成员,可以包括有具体代码的成员。

•7. 还有抽象方法不能用static修饰

练习:动物Animal 都有吃Eat和叫Bark的方法,狗Dog和猫Cat叫的方法不一样.父类中没有默认的实现所哟考虑用抽象方法。

abstract   class Animal
    {
        public string Name { set; get; }
        abstract public void Eat();

        abstract public void Berk();
    }

class Cat:Animal
    {
        public override void Eat()
        {
            Console.WriteLine("猫吃鱼");
        }
        public override void Berk()
        {
            Console.WriteLine("喵喵");
        }
    }

 class Dog:Animal
    {
        public override void Eat()
        {
            Console.WriteLine("狗吃骨头");
        }
        public override void Berk()
        {
            Console.WriteLine("汪汪");
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            Cat c = new Cat();
            c.Berk();
            c.Eat();
            Dog d = new Dog();
            d.Berk();
            d.Eat();
            Console.ReadKey();
        }
    }

时间: 2024-10-05 03:31:57

Net基础复习的相关文章

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

温故知新,基础复习(快速排序及优化)

温故知新,基础复习(快速排序及优化) 使用了三值取中和插排优化 #include<stdio.h> #define InsertSortNumber 10 void InsertSort(int Arra[],unsigned int LowIndex,unsigned int HighIndex) { printf("low=%d,high=%d\n",LowIndex,HighIndex); for (unsigned int i = LowIndex + 1; i &

温故知新,基础复习(二叉堆排序)

温故知新,基础复习(二叉堆排序) 最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序) 下例是最小堆 #include <stdio.h> #include <stdlib.h> void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex) { int TeampValue = Arra[LeftIndex]; Arra[LeftIndex]=Arra[RightIndex]; Arra[Righ

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对) #include<stdio.h> #include<stdlib.h> void PrintSumNumbers(int Arra[],int ASize,int Sum) { //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n"); return; } if(Sum&

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软

JS基础复习

js基础语法 Netcape js基础语法规范(ECMAScript1,2,3,3.1,5(IE9),6   ES    ES6=es2015) DOM BOM BOM :是由浏览器厂商各自实现的,所以差异比较大 DOM:相关的规范  是由W3C维护的 Node的优势  没有浏览器的兼容性问题 前端项目尽量不要使用ES6,需要考虑兼容性问题 --------------------------------数据类型--------------------------- 1.数据类型分类: 基本数据

c# 基础复习1

1. 类和对象 1.1 类和对象的概念 类:对象的类型,它不同于 int 等基本数据类型,因为类具有行为:也可以说是具有相 同特征和行为的一组对象的集合. 对象:对象是一个个你能看得见,摸得着的实体,是实实在在的事物,具有相同特征和 行为的对象可以抽象成类. 1.2 定义类的语法 [modifier] class ClassName { //[field,Method] } 1.3 如何创建对象 ClassName name=new ClassName(); 1.4 命名空间: 作用:用于管理类

Java 笔记之基础复习

1.& 与 &&的区别 两个都有逻辑与的功能.但是所不同的是,当&两边的表达式不是boolean类型的时候,&具有位与的功能:&&是短路与,当判断到前一个表达式为false的时候,将不会再去计算后面的表达式. 如: int i = 0; System.out.println((1==0)&(0==(i++))); System.out.println(i); 输出是: false 1 但是, int i = 0; System.out.pri

sql基础复习

--1.while循环 declare @sum int declare @i int set @i=1 set @sum=0 while(@i<101) begin set @sum [email protected]+@i set @[email protected]+1 if(@i>90) print @i end print @sum --2.goto语句 declare @num int set @num=100 flag: print @num select @[email pro

Java基础复习笔记系列 四

Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时,不能指定其长度.不同于C 数组的小标可以是整型常量或整型表达式. .length方法是显示数组的长度:数组.length;String.length();一个是属性,一个是方法.注意区分. 2.数组的内存分析? Array a[]; a = new Integer(15); /*这个a在栈中,在堆