杭州IT培训
美国上市IT培训机构

400-111-8989

NET入门:NET基础知识

  • 时间:2019-01-03 11:55
  • 发布:NET
  • 来源:NET

1、简述 private、 protected、 public、 internal 修饰符的访问权限。

private :   私有成员在类的内部才可以访问。 

protected : 保护成员,该类内部和继承类中可以访问。 

public :    公共成员,完全公开,没有访问限制。 

internal:   在同一命名空间内可以访问。

2、C#中的委托是什么?事件是不是一种委托?

简单的说:委托是一种方法容器,里面可以装载若干个具有相同签名的方法引用地址,那么调用委托,就相当于同时调用了该容器内的所有方法。

委托可以看做一种新的对象类型,具有面向对象的特点,定义时可签名接收参数,委托实例化时,可以把方法名作为一个参数传递给委托对象,

委托可以理解为指向函数的引用。生成的委托对象可以代理所传递的方法,可以接收方法的参数。也就是定义了委托,可以在不用调用原方法的情况下,调用那个方法。

委托可以把一个方法作为参数代入另一个方法。

委托可以理解为指向一个函数的引用。

委托是一种安全的函数指针,事件是一种消息机制,是一种特殊的委托。

3、override(重写)overload(重载)的区别

重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。

重写是进行基类中函数的重写,名称、参数和参数类型都相同,为了适应需要。

 4、C#中,string str = null 与 string str = “”的区别。 

string str = null 是不给他分配内存空间,

string str = "" 给它分配长度为空字符串的内存空间。

5、面向对象的语言具有________性、_________性、________

封装、继承、多态。

封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。  

       好处:

A.良好的封装能够减少耦合(比如实现界面和逻辑分离)

B.可以让类对外接口不变,内部可以实现自由的修改

C.类具有清晰的对外接口,使用者只需调用,无需关心内部

D.因为封装的类功能相对独立,因此能更好的实现代码复用

E.可保护代码不被无意中破坏,通过私有字段等实现内部。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。

要点:

1.封装,就是把一个对象所能操作的所有信息放在一起

2.封装能减少耦合,保持统一的对外接口,内部修改不影响外部调用

 

继承:

(1) 当一个类A能够获取另一个类B中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有继承关系。

(2) 被继承的类B称为父类或基类,继承了父类的类A称为子类或派生类.

缺点:

缺点一:父类变化,子类不得不变;

缺点二:继承破坏了包装,父类的细节暴露给了子类。

要点:

1:父类中的私有成员,派生类是绝不能访问;

2:C#要求一个类只能有一个直接基类;

3:被“sealed”关键字修饰的类将不能被继承;

4:被“protected”修饰的成员或者数据可以直接被派生类访问,属于“可以在家族里分享的秘密”。

5:善用“base”关键字,显示调用合适的自定义基类构造函数而不是使用默认构造函数。

6:继承需要合理使用才能发挥最佳效果,一般情况下适用于“is a”关系,不适用“has a”关系。

 

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。这就是多态,这种特性称为多态性。

多态的分类:多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。

编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。

运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。 

要点:

a.多态是面向对象的重要特性之一,指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

b.多态分为两种:一种是编译时多态,使用重载实现;另一种是运行时多态,使用重写实现;

c.重写有两种,一种使用override关键词,另一种使用new关键词

d.new重写实际上是对父类方法的隐藏,被覆盖的父类方法可以调用得到。因此new可以重写(或说是隐藏)的父类方法不一定要定义为虚方法或抽象方法。只是如果父类方法  是虚方法或抽象方法时会覆盖父类方法,如果不是,则隐藏。

e.重载和覆盖的发生条件:
重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关
重写,必然发生在基类和派生类中,其类函数用virtual修饰,派生类用override修饰
覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字 new 修饰 

隐藏,在子类中可以通过new 隐藏父类的方法

f.new覆盖与重写、重载的区别:

当子类与父类的参数不同时

当基类函数不是虚函数时,基类函数将被隐藏。(因为子类和基类不在同一范围内,所以不是重载)

当基类函数是虚函数时,基类函数将被隐藏。(因为子类和基类不在同一范围内,所以不是重载;因为参数不同,所以不是重写)

当子类与父类的参数相同时

当基类函数不是虚函数时,基类函数将被隐藏。(因为子类和基类不在同一范围内,所以不是重载,因为基类不是虚函数,所以是隐藏不是重写)

当基类函数是虚函数时,基类函数将被覆盖。(因为子类和基类不在同一范围内,所以不是重载)

预约申请免费试听课

怕钱不够?就业挣钱后再付学费!    怕学不会?从入学起,达内定制课程!     担心就业?达内多家实践企业供你挑选 !

【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!"
上一篇:前端的14个JavaScript调试技巧
下一篇:什么是代码架构?

Java 后端有哪些不用学的技术?

分布式存储之数据切片

策略模式:巧妙替代你的if-else

sorted()之正序倒序

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
江西省

贵州省

广西省

海南省