-
屏蔽数据成员:查看全部
-
string,Dog 逗号查看全部
-
泛型定义查看全部
-
泛型方法查看全部
-
静态类和静态成员 1、类的静态成员 成员被标记为static时,就是静态成员。静态成员将会被类的所有势力共享,所有实例都访问统一内存位置。 静态成员跟实例成员分开存放。静态成员存放在堆中。 2、静态成员访问 直接通过类名访问,普通成员需要通过实例访问。 3、静态成员声明周期 独立任何实例,没有实例也可以访问。静态成员使用之前编译器已经帮忙完成初始化。 4、静态函数不能访问实例成员,仅能访问其他静态成员,普通方法可以访问静态成员 5、静态构造函数 用于初始化静态字段 在引用任何静态成员之前,和创建任何实例之前调用。 与类同名,使用static,无参数,没有访问修饰符,普通构造函数可以重载的查看全部
-
结构和类 1、不同点 结构是值类型(在栈中),类是引用类型(在堆中) 结构不支持继承,类支持继承 结构不定义默认构造函数,编译器会定义 2、使用场合 结构由于分配内存块,作用域借书即被删除。不需要垃圾回收,用于小型数据结构,传递过程会复制,应该用ref提高效率。 类用于其他需要继承体系的场合。 例如:定义食物是一个不需要长期存储的数据类型,吃完就没有了,所以可以定义一个食物struct查看全部
-
接口 1、接口就是制定一组函数成员,而不实现他们的引用类型,用interface声明。接口函数不能用其他访问修饰符修饰,默认为public。 2、接口用来被实现 例如Cat:ICatchMice{ //实现接口函数 } 3、一个类可以实现多个接口,当一个类同时继承基类和实现接口时,应该将基类写在最前面,用逗号隔开 4、一个类实现接口时,必须实现接口声明的函数。 5、可以通过接口引用调用接口中的方法,也可通过实例调用接口方法。例子 爬树为一个接口,抓老鼠为一个接口,当猫这个类实现这两个接口时, Cat c=new Cat("tom"); 爬树 ci=(爬树)c; c.pashu();//通过实例调用接口方法 ci.pashu();//通过接口引用调用接口方法查看全部
-
密闭类和密闭方法 1、密闭类:有些类不希望其他人通过继承来修改,禁止产生派生类。 密闭方法;禁止他人重写该方法。 2、用sealed修饰类就是密闭类,修饰方法就是密闭方法 3、若派生类中的重写方法(用override修饰的方法)不想再被重写,则可以同时用override和sealed进行修饰。查看全部
-
1、抽象方法 在方法声明前加abstract,抽象方法不能有实际的函数体,抽象方法必须在派生类中重写,才能调用。虚方法在派生类中可以不重写,调用时就是调用的是基类中的方法。 2、抽象类 一个类中含有抽象方法就是抽象类 抽象类中可以含有普通方法可以包含抽象成员、普通成员、抽象方法和普通方法 抽象类不能实例化 抽象类的存在只有一个目的就是被继承。 抽象类的抽象成员必须在派生类中用override关键字实现,否则不能实例化查看全部
-
1、派生类对象中,有一部分是基类部分,在执行派生类的构造函数之前,将会隐式或者显示调用基类构造函数,也就说肯定会调用基类构造函数的。 2、调用顺序 实例成员初始化->基类构造函数->派生类的构造方法 3、调用基类构造函数:隐式调用和显示调用 //隐式调用 class MyDerived:MyBase{ MyDerived(){ ... } } //显示调用 class MyDerived:MyBase{ MyDerived():base() { ... } } 4、调用当前类的其他构造函数 例如;Pet(int age,string name):this(name){...} //调用进行公共初始化的函数 Pet(string name){...} //构造函数重载 5、对于基类中的字段最好在基类中完成初始化查看全部
-
1、关于虚方法和多态 (1)重写虚方法必须具有相同的可访问性,并且基类 方法不能是private (2)不能重写static方法或者非虚方法 (3)方法、属性、索引器、事件,都可以声明为virtual或者override 2、虚方法和多态 (1)虚方法:声明为virtual的方法就是虚方法。基类的虚方法可以在派生类中使用override进行重写 (2)多态:通过指向派生类的基类引用,调用虚函数,会根据引用所用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。多态是一种过程。 注意:通过基类引用建立统一关系;通过同名重写函数派生类的个性得以张扬。查看全部
-
事件的声明查看全部
-
虚方法和多态 面向对象编程中,,都遵循一个原则:依赖倒置原则。就是程序设计要依赖抽象类(pet),而不依赖于具体类(dog)。 基类的引用 可以通过一个基类类型的引用调用指向派生类,通过指向派生类的基类引用,只能访问派生类中的基类部分。例如 namespace Program{ class Pet { public string name; public void PrintName() { Console.Write("Pet's name is"+name); } class Dog { new public void PrintName() { Console.Write("宠物的名字是"+name); } class Cat { } //当使用基类引用时,运行结果为“Pet's name is JACK;Pet's name is TOM” public static void Main(string[] args) { Pet dog=new Dog(); dog.name="JACK"; dog.PrintName(); Pet cat=new Cat(); cat.name="TOM"; cat.PrintName(); } //当时用派生类引用时,运行结果为“宠物的名称为JACK;Pet's name is TOM” /*public static void Main(string[] args) *{ *Dog dog=new Dog(); *dog.name="JACK"; *dog.PrintName(); *Pet cat=new Cat(); *cat.name="TOM"; *cat.PrintName(); }*/ }查看全部
-
1、通过在派生类中定义同名变量隐藏基类中的成员——隐藏方法 2、语法细节 屏蔽数据成员:在派生类中声明名称和类型相同的成员。 屏蔽函数成员:在派生类中声明新的带有相同函数签名的成员(注意:并不包括返回类型相同) 让编译器知道:可以添加new关键字,否则会有报警。查看全部
-
定义List<>list=new List<>();查看全部
举报
0/150
提交
取消