• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【C#基础】继承、封装、多态、接口

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

继承:

派生(类、接口)

虚方法(Virtual)

一个类只能有一个基类,但是可以继承多个接口。

但是类可以有 多层继承 即:类B继承类A  类C又继承类B。

在基类中声明Virtual 子类可以实现也可以实现Virtual

如果要实现的话 要用Override 重写基类方法或属性。

重写:签名(所有参数类型和方法名)和放回类型必须一致

成员字段和静态方法都不能声明为Virtual

方法和属性可以声明为Virtual 两者用法是一样的。

new 关键字作用

1:实例化对象

2:new 关键字隐藏方法。但是不要刻意去用这个 主要用于处理版本冲突。

base:

base 关键字可以调用任何基类的方法,而不仅仅是重写的方法。

抽象类和抽象方法。

类和方法允许声明为abstract。抽象类不允许实例化 抽象方法不能直接实现,必须在非抽象类的派生类中重写。

Sealed:

sealed可以装饰类和方法:

 给类添加Sealed修饰符,就不允许创建该类的子类。

修饰方法的话 该方法就不能被重写。

密封类情形:

1:如果库、类或自己编写的其他类的操作中,类或方法是内部的,重写它的功能会导致代码不稳定,最好标记为Sealed:

2:对于密封类,编译器知道不能派生类,因此用于虚拟方法的虚拟表可以缩短或消除,以提高性能。

也就是说,类型有一个虚拟表?来记录/维护虚拟的方法或者类?

方法声明为Sealed,方法可以是基类的重写方法。但是接下来继承的另一个类就不能在扩展这个方法的虚拟表了。在sealed的方法中结束了。

public/protected/private是逻辑访问修饰符,internal是一个物理访问修饰符 边界是一个程序集。

类型定义可以是内部或公有的,不能把类型定义为protected、private、private protected 或protected internal,这些修饰符只能引用于成员。但是可以修饰嵌套类型。

类如果没有写public 则默认的是Internal。

public class MyClass
{
    protected class InnerClass
    {
        .....        
    }    
    //etc    ...

}

 接口: 接口成员 总是隐式为public

as和is运算符:

as -返回对象的引用。如果不是所要求的类型 这个运算符就返回null ,所以使用as之后最好验证一下是否为空。

is:根据条件是否满足,对象是否使用指定的类型。返回true和false.如果为true就可以进行类型转换。

 

重载:

重载方法被调用时,更具体的类型拥有更高的优先级

调用哪个重载方法在编译时就已经确定下来了

如  

public void Foo(A a){}

public void Foo(B b){}

A a=new A();
Foo(a);  //calls Foo(A a)


B b=new A();
Foo(b)   //calls Foo(B b)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#后台正则表达式截取字符发布时间:2022-07-14
下一篇:
asp.net|C#域用户验证发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap