zoukankan      html  css  js  c++  java
  • C#进阶之路——8.C# 继承

    C#进阶之路——8.C# 继承

    基础:

    继承

    含义:继承指允许重用现有类去创建新类的过程。

    原则:一个类派生出来的子类具有这个类的所有非私有的属性,即继承的子类拥有父类所有非私有属性。

    特点:C#不支持多重继承,C#类始终继承自一个基类(如果未在声明中指定一个基类,则继承自System.Object)

    注意:派生类继承基类时用“:”符号连接,派生类继承基类的所有非私有成员变量和方法。

    using System;

    public class Person

    {

    //这是基类

    }

    public class Student:Person

    {

    //这是派生类

    }

    进阶:

    调用基类的构造函数

    如果对类没有定义显式构造函数,则编译器将提供默认的构造函数,以初始化这些类的成员字段。

    如果显式添加了构造函数,就可以有效控制整个构造过程。

    实际开发中建议显式添加构造函数。

    注意:派生类通过使用:base()语法可以显式调用基类的构造函数。在必要的情况下,可以利用它来初始化字段。

    using System;

    namespace Jicheng

    {

    //基类

    public class Person

    {

    public string  _name;

    public uint  _age;

    //基类的构造函数

    public Person(string name,uint age)

    {

    this._name = name;

    this._age = age;

       //打印输出

    Console.WriteLine(_name);

    Console.WriteLine(_age);

    }

    }

    //派生类

    public class Student:Person

    {

    private uint _id;

    //派生类构造函数调用基类构造函数用“:base”

    public Student(string name,uint age uint id):base(name,age)

    {

    this._id = id;

    //打印输出

    Console.WriteLine(_id);

    }

    }

    public class Exercise

    {

    [STAThread]

    static void Main(string[] args)

    {

    //构造 Student

    Student objstudent=new Student(“XYZ”,45,001);

    }

    }

    }

     

    方法重写

    关键字:override

    具有override关键字修饰符的方法是对基类中同名方法的新实现。

    基类中的同名方法必须声明为virtual或abstract类型。

    给基类中的方法添加virtual关键字表示可以在派生类中重写它的实现。

    1、默认的C#方法并非virtual,因此不能重写。

    2、基类方法的可访问级别并不因重写它的方法而改变,他们的访问修饰符相同。

    3、new、static和virtual关键字不能与override访问修饰符一同使用

    关键字:virtual

    virtual关键字,用于将方法定义为支持多态,用于对一个类中可修改的方法的声明,这种方法称为虚拟方法,子类可以使用override关键字自由实现它们各自版本的虚拟方法。

    语法:

    [访问修饰符] virtual [返回值类型] 方法名称([参数列表])

    {

      //虚拟方法的实现

    }

    1、virtual访问修饰符不能与static和override等访问修饰符一同使用

    2、调用虚拟方法,在运行时系统会自动检查,以确定调调用了哪一个实现方法。

    关键字:new

    new访问修饰符用于显式隐藏继承自基类的成员。

    如果派生类成员与基类成员名称相同,new会将派生类成员识别为一个全新成员。

    1、在一个方法中同时使用new和override将会出错。

    2、new访问修饰符的真正目的是为了隐藏基类方法。

    3、如果将一个方法声明为new,它实际上并没有隐藏基类方法,并且编译器也产生了警告,这时应该删除new。

    参考:

    https://www.cnblogs.com/LagoOrLY/p/10318214.html

    转载引用请注明出处。 文章作者:PaulTsao 文章来源:http://www.cnblogs.com/PaulTsao/ 作者信息:www.linkedin.com/apollocaoy
  • 相关阅读:
    linux文件系统初探--Day2(3)
    linux文件系统初探--Day2(2)
    linux文件系统初探--Day2(1)
    linux文件系统初探--Day1
    LKD-虚拟文件系统
    linux-nova 安装
    per-file DAX 工作日志(2)
    linux 内核设计与实现——进程管理
    关于用户与服务端密码的校验问题 !mysql php
    [Err] 1055
  • 原文地址:https://www.cnblogs.com/PaulTsao/p/11486102.html
Copyright © 2011-2022 走看看