首页 > 代码库 > 修罗场第一天:C#之面向对象基础第一部分

修罗场第一天:C#之面向对象基础第一部分

1.关于类和对象

  类名下可以是字段,属性,构造函数,函数和索引器。属性的本质就是get和set两个函数。

2.面向对象:

  封装:可以减少冗余代码,并且将难以理解的东西封装起来,对外提供一个简单的接口。导致我们可以无需理解好多东西也可以运用好多东西。

  继承:在类与类之间提供了关系,为多态打下了基础,其具有当单根性和传递性。

  多态:实现方法有虚方法,抽象类以及接口。不同的对象对同一个消息做出不同的响应这个就是多态。多态是基于继承和里氏转换的。

    里氏转换:任何子类对象都可以赋值给父类对象

              如果父类对象中装的是子类对象,则父类对象可以强制转换为对应的子类对象。(使用关键字is和as)

    举例子:

技术分享
1 //这里假装声明了两个类,Student类和Person类,后者是前者的基类。
2 static void Main(string[]  args)
3 {
4     Person person=new Student();
5     Student student=p as Student;
6     student.StudentSayHi();
7 }
里氏转换

    虚方法:一个重要功能就是对父类的方法进行重写(overide),子类中为了满足自己的需求需要在子类中重复定义某个方法的不同实现,被重写的父类方法用virtual关键字来实现虚方法,特点是有相同的方法名,相同的参数列表,相同的返回值。

    举例子 :

 1 //首先定义3个有继承关系的类,Student和Teacher,他们都继承于Person
 2 public class Person
 3 {
 4     public virtual void SayHi()
 5     
 6     {
 7           Console.WriteLine("我是人类");  
 8     }
 9 }
10 public class Student:Person
11 {
12     public override void SayHi()
13     {
14            Console.WriteLine("我是学生");
15     }        
16 }
17 public class Teacher:Person
18 {    
19     public override void SayHi()
20     {    
21             Console.WriteLine("我是老师");
22     }
23 }
24 //继承的两个子类都对父类的虚方法进行了重写
25 //在Main方法中对类进行实例化并且调用
26 static void Main(string[] args)
27 {
28     Person person=new Person();
29     person.SayHi();
30     Person student=new Student();  
31     student.SayHi();
32     Person teacher=new Teacher();
33     teacher.SayHi();
34 }

 第一部分结束。                                                                                                                                                                                                                      2017-06-30  21:47:46  

修罗场第一天:C#之面向对象基础第一部分