5月30日复习


1、对象初始化器:Class1 p1 = new Class1() { ProvName = "河南", ProId = 1};
2、 属性封装了字段。方法的多个参数封装成一个对象。将一堆代码封装到一个方法中。将一些功能封装到几个类中。将一些具有相同功能的代码封装到了一个程序集中,并且对外提供统一的访问接口。
3、继承的好处:一、代码重用。二、多态。
4、 继承的单根性:一个类只能继承自一个父类,不能继承多个父类。C#中任何一个类都是继承自object类。如果一个类没有显示继承自任何类,则默认继承自object类。继承的传递性:如果显示的指定了当前类继承自某个类,则将覆盖默认继承的object类。SuperMan继承了object类,这时Superman中就有了object类中的4个方法(ToString();GetType(),GetHashCode(),Equals()),然后Person又继承了Superman,这时person会将superman中的那四个方法再继承下来,相当于person类间接从object中继承下来。
5、继承时构造函数的问题:继承的时候构造函数不能被继承;子类的构造函数,会默认去调用父类中无参数的构造函数。修改错误方法:1在父类中加一个无参的构造函数;2不修改父类,而是在子类的构造函数后面通过:base(),显示的去调用父类的某个构造函数。
6、base作用:1在子类中调用父类的构造函数。this作用:在当前类的构造函数后面通过:this()来调用当前类自己的构造函数。
7、 集合初始化器: List<int> list = new List<int>() { 10,20,30};
对象初始化器:  Person p = new Person() { Name = "Lee", Age = 18, Gender="男"};
8、在一般情况下,如果子类继承了父类的成员,那么在子类中,通过this.成员或者base.成员都是访问的是一样的。除非父类中的成员子类继承后又重写了。
9、访问修饰符:
private:私有访问修饰符,只能在当前类内部来访问。
protected:受保护的访问修饰符,只能在当前类内部,以及当前类的所有子类内部访问得到。
internal:internal访问修饰符,表示只能在当前程序集内部访问。
public:在任何地方都可以访问得到。
protected internal:相当于同时具有protected和internal的权限。
protected与internal没有可比性。假如不在同一个程序集中,但是依然存在继承关系,那么protected访问修饰符类型依然可以访问。
类的访问修饰符只有是这两种:public,internal。
10、关于继承中的“私有成员”是否被继承的问题:赵老师观点,私有成员没有被继承。1虽然子类继承父类后,在创建子类对象的时候,父类的那些私有成员也被分配了内存。2继承只是面向对象中的一个概念,目的是为了子类使用(多态,代码重用),私有成员即使继承了,子类也不能访问,所以在面向对象中,继承了但不能访问,没有意义。
11、可访问性不一致,子类的访问修饰符不能比父类高。类中属性或字段的访问级别不能比对应的类型的访问级别高。方法的访问级别不能比方法的参数和返回值的访问级别高。
12、对扩展开放,对修改关闭——开放封闭原则。
13、 将父类中的Show()方法标记为virtual;2当一个方法是虚方法时候,那么这个方法在子类中就可以用override被重写了。子类继承父类之后,可以直接使用该方法,也可以不重写该方法;3子类如果要重写父类的方法,则需要在子类show方法前加一个override关键字。子类重写父类的方法,必须并且只能用override关键字。
14、静态成员,静态类。1调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用。也就是说使用静态成员不需要实例化对象。2静态成员会在整个应用程序退出时候才释放资源,所以可以在整个应用程序中共享数据。3静态类不能被实例化,不能被继承。4由于静态成员会在退出时候才释放资源,所以尽量避免写静态字段和静态属性,最好只写静态方法。5当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数(静态构造函数不能有访问修饰符,并且不能带参数。)6静态构造函数,只会在第一次使用静态类之前,执行一次,并且只会执行一次。
15 什么情况下要将一个类标记为静态类?一般情况是,当这个类是个工具类,里面都是方法,为了让用户调用的时候方便,不需要实例化对象,这时候可以将该类标记为静态类,此时该类中只能包含静态成员,不能包含实例成员。比如Convert,Math,File。
16、什么情况下组要在一个普通类中编写一个静态成员,而这个类不能标记为static? 当这个类需要被实例化的时候,如果这个类中有一个成员是所有对象都共享的数据,这时候可以将该类中的这个成员标记为静态的,但是该类还是一个实例类。
17、 静态类不能被其他类继承,静态类只能继承自Object类(静态类不能继承自其他类)。静态类不能实现任何的接口,因为接口中的成员都是实例成员。
18、sealed:密封类,不能被继承。sealed关键字表示类不能被继承。静态类的本质abstract+sealed。静态类不能被实例化:abstract;静态类不能被继承:sealed。禁止子类重写父类的方法。
19、     继承(多态)、静态本身就是相反的 。
20、如何把一个字符串转换成一个枚举类型:(自己定义的枚举类型)(Enum.Parse(typeof(自己定义的枚举类型),"待转换的字符串")。比如:(Gender)(Enum.Parse(typeof(Gender),"待转换的字符串")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值