• 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
  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/PaulTsao/p/11486102.html
Copyright © 2020-2023  润新知