CodeSnippet/CsharpTests/03_OOPTests.cs
(开头部分) 14KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
/// <summary>
/// 实现继承/接口继承/抽象类
/// </summary>
///<remarks>
/// 抽象类和抽象函数
/// C#中允许把类或函数声明为abstract,抽象类不能被实例化.抽象函数也不能直接实现,必须在非抽象的派生类中重写
/// 如果类包含抽象函数, 则该类也必须被声明为抽象的
/// 抽象方法只在派生类中真正实现,这表明抽象方法只存放函数原型,不涉及主体代码
/// 派生自抽象类的类需要实现其基类的抽象方法,才能实例化对象
/// 使用override关键字可在派生类中实现抽象方法,经override声明重写的方法称为重写基类方法,其签名必须与override方法的签名相同
/// 抽象类和接口的区别
/// 相同点:
/// 1.都可以被继承
/// 2.都不能被实例化
/// 3.都包含方法声明
/// 4.派生类必须实现未实现的方法
/// 区别:
/// 抽象基类可以定义字段/属性/方法实现.接口只能定义属性/索引器/事件/方法声明
/// 抽象类是一个不完整的类, 需要通过集成进一步细化.而接口更像是一个行为规范,表明我能做什么
/// 接口是可以被多重实现的, 可以有多个类实现接口,
/// 因为类的单一继承性, 抽象类只能被单一继承
/// 抽象类实现继承需要使用override关键字,接口则不用
/// 如果抽象类实现接口, 可以把接口方法映射到抽象类中作为抽象方法不必实现, 而在抽象类的子类中实现接口方法
/// 抽象类表示的是:这个对象是什么
/// 接口表示的是:这个对象能做什么;使用抽象类是为了代码的复用,使用接口是为了实现多态性
/// 普通类和抽象类的区别
/// 都可以被继承 抽象类不能实例化,
/// 普通类允许实例化 抽象方法值包含方法声明而且必须包含在抽象类中
/// 子类继承抽象类必须实现抽象类中的抽象方法除非子类也是抽象类 抽象类中可以包含抽象方法和实例方法
/// 派生类的构造函数执行顺序
/// 实例化父类时,可以使用new子类,执行构造函数顺序为:执行父类构造函数=>执行子类构造函数
/// 实例化子类时,只可以new子类,执行顺序同上
/// 父类实例化后,只能执行父类的方法,获得父类的属性等
/// 实例化子类后,可同时执行子类和父类的方法和属性,如同名方法,则执行子类的方法
/// 子类构造函数可以使用base关键字指定调用的父类构造函数
///</remarks>
namespace CodeSnippet.CsharpTests.OopTests
{
[TestCategory("OopTests")]
[TestClass()]
public class OopTests
{
/// <summary>
/// 类的定义
/// </summary>
[TestMethod]
public void ClassDefinition()
{
Person person = new()
{
_name = "wang",
Age = 100
};
Console.WriteLine($"{person._name},{person.Age},{person.Birthday},{person.readonlyValue},{Person._describe}");
}
后面还有 443 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
