学习笔记
1.变量命名
Camel:多用于给变量或者字段命名,第一个单次首字母小写,其余每个单词的首字母大写。
给字段命名,前面必须加下划线。
_ fileName
Pascal:要求每个单词的首字母都要大写。
FileName
2.进程
一个应用程序就是一个进程,而一个进程又是由多个线程组成的。
进程帮助我们字内存中分配相应程序执行所需的空间。
3.面向对象
面向对象三大特性:封装,继承,多态
封装:
--->减少了大量的冗余代码
---->封装将一些复杂的代码封装起来,对外提供一个简单的使用接口。
继承:
--->减少类中的冗余代码
--->让类与类产生了关系,为多态打下基础
特性:
单根性:一个子类只能有一个父类
传递性:子类继承父类,子类又可以作为父类被继承。
里氏转换:
1.子类可以赋值给父类
2.如果父类中装的是子类对象,则可以将这个父类转换成相对应的子类对象
--->
is:返回bool类型,指示是否可以做这个转换
as:如果转换成功,则返回对象,否则返回NULL
作用:可以将所有子类当成父类来看 ,针对父类进行代码编写,写出通用的代码,适应需求的不断变更
class Program { static void Main(string[] args) { Person person = new Student(); if (person is Teacher)//判断person是否为Teacher对象 { ((Teacher)person).TeacherSayHello(); } else { Student s = person as Student;//将person转换为student对象 if (s != null) { s.StudentSayHello(); } } Console.ReadKey(); } } public class Person { public void PersonSayHello() { Console.WriteLine("我是人类"); } } public class Student : Person { public void StudentSayHello() { Console.WriteLine("student"); } } public class Teacher : Person { public void TeacherSayHello() { Console.WriteLine("我是老师");
多态;
--->虚方法
virtual override
--->抽象类
abstract override
--->接口
interface
类决定了对象将要拥有的属性和行为。
4.关键字
new:
1)创建对象
--->在堆中开辟空间
--->在开辟的堆空间中创建对象
--->调用对象的构造函数
2)隐藏父类的对象
this:
1.代表当前类的对象
2.显示的调用自己的构造函数
base:
1.显示调用父类的构造函数
2.调用父类的成员
5.抽象类实现多态
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 UDisk u = new UDisk(); 6 MobileDisk m = new MobileDisk(); 7 Telphone t = new Telphone(); 8 Computer c = new Computer(); 9 c.MS = t; 10 c.CpuRead(); 11 c.CpuWrite(); 12 t.PlayMusic(); 13 Console.ReadKey(); 14 15 } 16 } 17 18 abstract class MobileStorage 19 { 20 public abstract void Read(); 21 public abstract void Write(); 22 } 23 24 class MobileDisk : MobileStorage 25 { 26 public override void Read() 27 { 28 Console.WriteLine("移动硬盘在读取"); 29 } 30 public override void Write() 31 { 32 Console.WriteLine("移动硬盘在写入"); 33 } 34 } 35 36 class UDisk : MobileStorage 37 { 38 public override void Read() 39 { 40 Console.WriteLine("U盘在读取"); 41 } 42 43 public override void Write() 44 { 45 Console.WriteLine("U盘在写入"); 46 } 47 48 } 49 50 class Telphone : MobileStorage 51 { 52 public override void Read() 53 { 54 Console.WriteLine("手机在读取"); 55 } 56 57 public override void Write() 58 { 59 Console.WriteLine("手机在写入"); 60 } 61 62 public void PlayMusic() 63 { 64 Console.WriteLine("手机在播放音乐"); 65 } 66 } 67 68 class Computer 69 { 70 public MobileStorage MS 71 { 72 get; 73 set; 74 } 75 public void CpuRead() 76 { 77 this.MS.Read(); 78 } 79 public void CpuWrite() 80 { 81 this.MS.Write(); 82 } 83 }