首页 > 其他分享 >`new` 关键字、隐藏基类方法

`new` 关键字、隐藏基类方法

时间:2024-08-31 12:47:25浏览次数:3  
标签:Show 子类 关键字 DerivedClass 基类 new 方法

new 关键字、隐藏基类方法

new 关键字还可以用来隐藏基类中的方法。
当子类的方法名称与基类中的方法名称相同,但不希望子类的方法被视为重写(override)基类的方法时,可以使用 new 关键字来声明子类的方法,
从而隐藏基类的方法。

代码示例

public class BaseClass
{
    public virtual void Show()
    {
        Console.WriteLine("BaseClass.Show()");
    }
}

public class DerivedClass : BaseClass
{
    // 使用 new 关键字隐藏基类的方法
    public new void Show()
    {
        Console.WriteLine("DerivedClass.Show()");
    }
}

class Program
{
    static void Main(string[] args)
    {
        BaseClass baseObj = new DerivedClass();
        baseObj.Show(); // 调用 BaseClass.Show()

        DerivedClass derivedObj = new DerivedClass();
        derivedObj.Show(); // 调用 DerivedClass.Show()
    }
}

应用场景

  • 隐藏而非重写方法:在子类中,如果你不希望子类的方法重写基类的方法,而是完全独立于基类的方法,可以使用 new 关键字。例如,在某些特定场景下,子类需要提供与基类同名但功能不同的方法。

标签:Show,子类,关键字,DerivedClass,基类,new,方法
From: https://www.cnblogs.com/zhuoss/p/18390136

相关文章

  • # 泛型中的new关键字的约束的函数
    泛型中的new关键字的约束的函数一般用于泛型约束,在函数或者类的末尾,通过whereT:new()约束,确保T类型可以被实例化。应用场景在封装sqlsugar中我遇到了类似的用法,传给sqlsugar中的entity必须有一个公开的无参构造函数......
  • Java中super关键字的学习
    super关键字目录super关键字1.访问父类的成员变量2.调用父类的方法3.调用父类的构造方法4.在实现接口的类中调用接口的默认方法注意事项在Java中,super是一个关键字,它主要用于在子类中引用父类的成员(包括字段、方法和构造方法),或者用于解决子类和父类之间的命名冲突。以下是s......
  • C++学习——类当中static关键字的作用
    一、类和对象我们知道类是“行为”和“属性”的集合,我们可以通过类来实例化对象,从而定义对象的“行为”和“属性”。比如:classCar{ Stringbrand; Stringlicense; Stringcolor;}CarToyota;这里定义了“Car”的类,通过“Car”这个类实例化了“Toyota”。那么类当中的......
  • PHP8面向对象快速入门三 类的继承 类方法属性重写和final关键字 parent调用父类的方法
    在PHP中,类的继承(继承)是一种机制,允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。继承可以帮助你创建一个基于现有类的新类,保留原有类的特性并增加或修改其功能。classAnimal{public$name='dongwu';protected$age=1;private......
  • 5 Python的变量、关键字、命名规则、基本数据类型及类型转换
    本文是Python系列教程第5篇,完整系列请查看Python专栏。1定义变量在Python中定义变量非常简单,你只需要给变量赋值即可。Python会自动检测变量的数据类型。下面是一些基本的例子来展示如何定义不同类型的变量:1.1整数age=251.2浮点数height=1.751.3字......
  • Java中final关键字的学习
    final关键字目录final关键字1.修饰变量2.修饰方法3.修饰类4.修饰方法参数注意事项示例在Java编程语言中,final关键字是一个非常重要的概念,它用于表示一个变量、方法或类是不可变的或不能被进一步修改的。以下是final关键字的几种常见用法:1.修饰变量常量:final修饰的变量......
  • vue-router 跳转异常 Error: Navigation cancelled from “/“ to “/home“ with a n
    异常信息:Error:Havigationcancelledfrom"/"to"/home"withanewnavigation ,如下图:原因:    1、这个错误是vue-router内部错误,没有进行catch处理,导致的编程式导航跳转问题,往同一地址跳转时会报错的情况。push和replace都会导致这个情况的发生。   ......
  • 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理
    使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性。同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率。下面是一个推荐的目录结构示例:my_fastapi_project/├──app/│├──__init__.py│├──main.py......
  • C++:new
    还记得之前帖子中提到的malloc吗,new和malloc都可以申请和释放空间。一般使用new有三种格式:1.指针变量名=new+类型;2.指针变量名=new+类型(赋予一个初始值);3.指针变量名=new+类型[内存单元个数];释放空间需要用到delete。例子:#include<iostream>usingnamespacestd;in......
  • Android开发 - synchronized 关键字控制多个线程对共享资源的访问解析
    什么是synchronizedsynchronized一个关键字,用于实现线程同步。其主要作用是控制多个线程对共享资源的访问,确保被synchronized修饰的代码块或方法同一时间只有一个线程可以执行,从而避免数据不一致的问题为什么需要synchronized在多线程编程中,多个线程可能同时访问和修改......