-
结构和类
不同点:1)结构是值类型(在栈中),类是引用类型(在堆中)
2)结构不支持继承,类支持继承
3)结构不能定义默认构造函数,编译器会定义
查看全部 -
使用:
Cat c= new Cat(); // 实例化Cat类
ICatchMice ic= (ICatchMice)c; //强制将c转换类型为ICatchMice类型(因为是引用类型)
c.CatchMice(); //通过对象调用 (注:可以调用c对象本身有的函数)
ic.CatchMice(); //通过接口调用 (注:只能调用接口内定义的函数)
查看全部 -
接口:
1、指定一组函数成员(0/1/多个成员均可)
2、函数成员默认public,但是不能加任何访问修饰符(不能加public)
3、不实现他们(比抽象类还抽象,完全没有普通函数和数据的抽象类)
4、是一种引用类型
5、本身不能实现,只能用来被实现(必须有实现)
查看全部 -
密闭类和密闭方法
密闭类:声明为sealed的类
密闭方法:声明为sealed的方法
密闭的目的:
1、密闭类:有些类不希望其他人通过继承来修改
2、密闭方法:不希望其他人重写该方法
查看全部 -
抽象类
1、抽象类的存在只有一个目的,就是被继承
2、抽象类不能实例化,用abstract修饰
3、抽象类可以包含抽象成员和普通成员,以及他们的任意组合
4、抽象类的抽象成员在派生类中需要(必须)用override关键字实现
查看全部 -
抽象成员:
1、必须是方法、属性、事件、索引
2、必须用abstract修饰符标记
3、不能有实现代码块
查看全部 -
基类中的字段初始化为私有的,需要写出保护的,在派生类中才可以访问
protected 关键字
查看全部 -
调用当前类的其他构造函数:
Pet():base()
{
}
查看全部 -
派生类及构造函数调用顺序:
查看全部 -
虚方法的其他知识点:
1、重写虚方法必须具有相同的可访问性,且基类方法不能是private
2、不能重写static方法或者非虚方法
3、方法、属性、索引器、事件都可以声明为virtual或者override
查看全部 -
隐藏方法:
我们不能删除基类中的任何成员,但是可以用与基类成员名称相同的成员来屏蔽基类成员
细节:
1、屏蔽数据成员:在派生类中声明名称和类型相同的成员
2、屏蔽函数成员:在派生类中声明新的带有相同函数签名的成员
(注:此处不包括相同的返回值类型,只是参数列表相同,函数名相同)
3、让编译器知道:可以添加new关键字,否则会有警告
查看全部 -
继承:
1、一个类派生于另一个基类型,它拥有该基础类型的所有成员字段和函数
2、object类是所有类的共同基类,它是唯一的非派生类,是继承层次结构的基础。对于其他类,父类和子类的概念都是相对的。
查看全部 -
虚方法和多态
查看全部 -
虚方法:声明为virtual的方法就是虚方法。基类的虚方法可以在派生类中事业override进行重写
多态:通过指向派生类的基类引用,调用虚函数,会根据引用所指向派生类的实际类型,调用派生类中的同名重写函数,便是多态。
查看全部 -
依赖倒置原则
查看全部
举报