zoukankan      html  css  js  c++  java
  • 类和继承

    1. 所有的类都派生自Object;
    2. 派生类引用可以转换成基类;
    3. 屏蔽基类成员使用关键字new则可以屏蔽基类成员;
    4. 虚方法和覆写方法

    基类的方法被标记为virtual

    在派生类中有匹配的override方法

    For Example:

    class MyBaseClass{

    Virtual public void printf(){

    Console.WriteLine(“Fuck”);}

    }

    class MyDerived:MybaseClass{

    Override public void printf(){

    Console.WriteLine(“Fuck Again”)

    }

    Class Pargram{

    Static void Main(){

    MyDerived derived = new MyDerived();

    MyBaseClass mybc =(MyBaseClass)derived;

    Derived.printf();

    Mybc.printf();

    }}

    结果输出:

    Fuck Again

    Fuck Again

    结论:在覆写后无论有多少继承都是显示最高级别的派生类,由基类一直传递。而使用new可以屏蔽基类,则override无法覆盖到。但基类必须由派生类转换过来。

    1. 访问级别:

    Public:所有的类,包括程序集内部的类和外部的类和外部的类都可以自由地访问成员。

    Private:只能被它自己的类的成员访问。它不能被其他的类访问,包括继承它的类。

    Protected:如同访问private访问级别,除了一点,它允许派生自该类的类访问该成员。

    Internal:内部成员同一程序集内部的所有类成员都可见,程序集外部类成员不可见。

    Protected internal:对所有继承该类的成员或在该程序集内部的类可以访问。

    1. 抽象成员:指设计为覆写的函数成员

    特征:

    ①必须是一个函数成员。也就是说,字段和常量不能为抽象成员;

    ②必须用abstract修饰符标记;

    ③不能有代码块。抽象成员的代码用分号表示。

    ④必须被覆写,使用override。

    可以声明的4个类型方法,属性,事件,索引。

    1. 抽象类:指被继承的类,只能作为其他继承类的基类。抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通实现的成员的任意组合。不能创建抽象类的实例。并且继承抽象的必须覆写。

    例:

    abstract class base{

    Public void printfbase(){

    Console.Write(“I am your father!”);}

    Abstract void printfderived();

    }

    class derivedclass:base{

    Override printfderived(){

    Console.Write(“I am your father too!”);}

    Class prograg{

    Static void main(){

    Baseclass base=new baseclass();

    Derivedclass dc=new derivedclass();

    Base.printfbase();

    Dc.printfderived();}

    }

    输出:

    I am your father!

    I am your father too

    8.密封类:sealed 只能被用作独立的类,不能作为基类。

    9.拓展方法,声明拓展的方法必须声明static,拓展方法本身必须声明static。拓展方法必须包含关键字this作为第一个参数类型。

    Fox Example:

    Namaspace ex{

    Sealed class MyData{

    private double D1,D2,D3;

    Public MyData(double d1,double d2,double d3){

    D1=d1;

    D2=d2;

    D3=d3;}

    Public double sum(){

    Return D1+D2+D3;}

    Static class ExtenMyData{

    Public static double Average(this MyData data){

    return data.sum/3;}

    }

    Class Pragram{

    Static void main(){

    MyData data=new MyData(3,4,5);

    Console.WriteLine(“Sum is :{0}”,MyData.sum);

    Console.WriteLine(“Average is:{0}”,Mydata.Average();}

    }

    1. 命名约定

    Pascal 约定 标识符每个单词首字母大写 适用于:类、方法、命名空间、属性和公共字段

    Camel 除了第一个单词其他单词首字母大写 适用于:局部变量的名称和方法生命的形参名称

    下划线加Camel 以下划线开头的camel大小标识符 适用于:私有和受保护的字段

  • 相关阅读:
    数组中最大和的子数组
    数据结构与算法面试题80道
    fcntl获取和修改文件打开状态标志
    dup等复制文件描述符函数
    截断文件函数truncate和ftruncate
    浅析
    五个Taurus垃圾回收compactor优化方案,减少系统资源占用
    如何用交互式特征工程工具进行数据分析处理
    【华为云技术分享】解密如何使用昇腾AI计算解决方案构建业务引擎
    Scrum Master教你四招,瓦解团队内部刺头
  • 原文地址:https://www.cnblogs.com/dlvguo/p/9736924.html
Copyright © 2011-2022 走看看