C#每日一课(三十五)

40 篇文章 1 订阅

面向对象编程概述
面向对象编程(OOP),是把现实中的事物进行抽象化,其设计的重点就是对类进行设计。

  • 什么是类和对象
    类,它实际上是一种复杂的数据类型,在这个复杂的类型当中有数据和与这些数据相关的操作封装在一起。
    对象,就是在有了类之后对这些抽象化的类进行具体化,就行成了对象,也就是说对象是指类的实例。比如:学生,它是一个抽象的类,具体到某个人如:张三,他就是一个对象。
    如下例,创建一个学生类Student
public class Student
{
	public string StudentNo	//学号
	{
		get
		{
			return "";
		}
	}
	public int StudentAge	//年龄
	{
		get
		{
			return 0;
		}
	}
	public string StudentGrade	//年级
	{
		get
		{
			return "";
		}
	}
}
//把这个类实例化出一个对象
Student zhangsan = new Student();

使用Visual Studio新建C#控制台应用程序
1.在生成的工程中新增一个Student类

class Student
    {
        private string no;
        private int age;
        private string grade;
        //学号
        public string StudentNo 
        {
            get
            {
                return no;
            }
            set
            {
                no = value;
            }
        }
        //年龄
        public int StudentAge
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        //年级
        public string StudentGrade
        {
            get
            {
                return grade;
            }
            set
            {
                grade = value;
            }
        }
		
		public void Show()
        {
            Console.WriteLine("学号:" + no + ";" + "年龄:" + age + "年级:" + grade );
        }
    }

在上面的类定义中,使用了get{}和set{},这是类的访问器,其中get表示读取,set表示写入。如果某个成员只可读取则不需要set语句。
注意:set语句中有个关键字value,用来表示赋给成员的值。
2.在Main方法中加入如下代码时行测试:

Student stu = new Student();
stu.StudentNo = "00001";
stu.StudentAge = 18;
stu.StudentGrade = "Grade3";
stu.Show();
Console.ReadKey();

编译运行后的结果:
运行结果

  • 如何理解面向对象编程
    面向对象编程,简称OOP。通过给程序中加入扩展语句,把函数“封装”进编程所必须的“对象”当中,使得复杂的工作条理更清晰、编写更容易。
    面向对象编程达到了软件工程的三个主要目标
    1.重用性
    2.灵活性
    3.扩展性
    面向对象编程的基本思想中使用了对象、类、继承、封装、多态等来进行程序开发
    面向对象编程的本质是以对象为中心,编写可重复利用、方便扩展的代码
    面向对象编程的一个标准过程
    运行结果

  • 面向对象的技术
    面向对象的关键技术是:对象、类、接口、继承、多态
    对象与类的相关知识上面已做介绍,下面介绍接口、继承和多态。

  • 接口
    接口中只包含了成员的定义,不包含成员的具体实现。
    这里指的成员有:方法、属性、索引器、事件……
    设计接口的目的是为不相关的类提供通用的属性,打个比方,学生类、教师类,可以为它们设计一个接口人类,这个人类中提供了学生类和教师类的通用属性。
    在C#中的接口如:IDbConnection用来定义数据源的连接,它提供了多个未实现的属性和方法。开发者可以自定义两个不同的类sqlconnection、AccessConnection并继承自IDbConnection接口。这个时候这两个类就具备了相同的成员,但各自去实现接口中未实现的属性和方法。
    下面代码说明了一个简单的接口定义

interface Iconnection
{
	public string DatabaseName;	//数据库名称
	public void AddDataBase();	//添加数据
	public string GetConn();	//获取数据库连接
}

接口就像是一个模板,提供了基本成员的结构,但并没有添加任何实质性的内容。注意:C#不能实现多个类的继承,而可以实现多个接口的继承,所以 使用接口是可以让一个类具备两个以上基类的唯一途径。
作用Visual Studio新增C#控制台应用程序
1.新增一个接口 Person

public interface Person
    {
        string Name
        {
            get;
        }
        void ToDo();
    }

2.新增一个类Student继承自这个接口,并在Main方法中实例化Student类并调用接口中定义的方法

class Student : Person
    {
        public string Name { get; set; }

        public void ToDo()
        {
            Console.WriteLine(Name + "是学生,学习!");
        }
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Name = "谢声";
            stu.ToDo();
            Console.ReadKey();
        }
    }

编译运行的结果如下:
运行结果

  • 继承
    继承就是从父类中获取一些公开的成员,如方法和属性。
    语法如下
//继承类
class Student : Person
//继承接口
class Student : Interface

子类与父类之间使用“:”这个符号进行相隔,C#中只允许继承一个父类,但允许继承多个接口。如果子类继承了接口,那么子类必须要实现接口中定义的所有公开成员。

  • 多态
    多态是指类可以有多种形态,通过修改可以形成多种不同的实现方法。当子类从父类继承时,它会获得父类中的所有方法、字段、属性和事件,如果在子类中要更改父亲类的数据和行为,通常有两种选择:
    1.创建新的成员替换父类成员,创建成员的时候使用new 关键字
    2.可以重写虚拟的父类成员
    方法一:替换父类成员
class ParentClass
{
	public string GetName()
	{
		return "父类名称";
	}
}
class SonClass : ParentClass
{
	public new string GetName()
	{
		return "子类名称";
	}
}

方法二:重写虚拟的父级成员,父类在员使用关键字virtual,子类中成员使用关键字override

class ParentClass
    {
        public virtual string GetName()
        {
            return "父类名称";
        }
    }
    class SonClass : ParentClass
    {
        public override string GetName()
        {
            return "子类名称";
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值