首页 > 其他分享 >通过依赖倒置,将子类数据传递给父类

通过依赖倒置,将子类数据传递给父类

时间:2024-07-01 17:52:38浏览次数:17  
标签:Console Default 子类 WriteLine 倒置 父类 public

1、不管是父类调用子类的方法,还是获取子类的属性,道理都是一样的,
依赖倒置只是其中一个方法

public class Child:Parent
{
	public string Default {get;set;}
	public Child()
	{
		Default="默认值";
	}
}

我现在父类需要拿到子类的Default
1、增加一个接口IChild,将接口当做参数传递给父类
代码如下

 public interface IChild 
 {
        string Default { get; set; }
        void SpecificMethod(int i);
 }
  public class Child : Parent, IChild
    {
        public string Default { get  ; set  ; }

        public override void GetMethod()
        {
            // base.GetMethod();                //这会执行父类的方法
            Console.WriteLine("这是子类方法");
        }

        public void SpecificMethod(int i)
        {        
            Console.WriteLine(i);
        }

        public Child()
        {
            Default = "123";
        }
    }
	 public class Parent
    {
        public void GetIChild(IChild child)
        {         
            Console.WriteLine(child.Default);
            child.SpecificMethod(i);
        }
        public virtual void GetMethod()
        {
            Console.WriteLine("这是父类方法");
        }
    }

通过 Console.WriteLine(child.Default);
child.SpecificMethod(i);
这样我们就可以获得子类的参数和方法

标签:Console,Default,子类,WriteLine,倒置,父类,public
From: https://www.cnblogs.com/guchen33/p/18278555

相关文章

  • 如何为父类中私有(private)的属性赋值
    1.可以将父类中的私有属性写上调用接口将改父类转化为javabean子类继承这个改装后的父类通过调用getset接口来调用私有化的父类成员2.可以通过在子类中生成构造函数在构造函数内部使用super调用父类中的private成员,然后再测试类中new对象,通过getset方法赋值取值父类p......
  • ICLR2024 | iTransformer: 倒置Transformer,刷新时序预测新纪录
    目录:1、引言---1.1 问题背景---1.2设计思路  2、相关工作---2.1Transformer系预测模型---2.2多变量时序数据的词构建3、iTransformer---3.1模型结构---3.2以变量为主体的特征表示---3.3模块分析4、实验分析---4.1时序预测---4.2框架能力1、引言 近......
  • 对于java中向上转型后调用.getClass()方法还是子类的原因
    在java中有一个概念叫引用。官方给的定义是这样的:在Java中,"引用"(Reference)是指一个变量,它存储了对象的内存地址,而不是对象本身。换句话说,引用是指向对象的指针或者句柄。在Java中,所有的对象都通过引用来访问和操作,而不是直接访问对象本身。 通俗的将就是一个指路人,当有人询......
  • Rails - 如何创建关联到 2 个子类的 SIngle Table 继承的一部分
    因此,我设置了单表继承,这样我就可以为User表创建两个子类。在我当前的实现中,这两个子类将拥有完全相同的字段,因此我认为STI在这里是有意义的。类User<ApplicationRecord结束类Student<用户结束类教师<用户结束类约会<应用记......
  • C#父类与子类之间关系的妙用
    namespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("Hello,World!");AppleClassAppleClass=newAppleClass();AppleClass.Name="......
  • 指针(2),迭代,快速排序,单词倒置
    指针运算:& * +N-Np++ //往后跳了一个元素 p-- //往前一个元素 p-q //相同类型的指针减出的来的结果为,地址之间相差的元素个数 关系运算:p>q  p<q >>=<<=!= 迭代:迭代其实就是一种特殊的循环,迭代根据上一次循环得到的运算结果来进行下......
  • 揭秘Java反射:如何轻松获取类的属性及父类属性
    哈喽,大家好,我是木头左!相信很多小伙伴在学习Java的过程中,都曾经遇到过需要动态地获取类的属性和方法的场景。而Java反射正是解决这个问题的利器。那么,如何使用Java反射来获取类的属性及父类的属性呢?一、Java反射简介要了解一下Java反射是什么。简单来说,Java反射就是运行时能够......
  • Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    一、写在开头在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized、Lock或者AtomicInteger;我们还学习过CAS算法,在那篇博文中我们同样也提及atomic。那么今天,我们就来好好学一学Atomic原子库,一个基于CAS算......
  • 子类调用父类构造方法例题
    这段代码定义了三个类:Father(父类)、Child(子类)和Test(测试类)。首先,main方法执行newChild();时,会调用子类的构造函数。父类子类在子类Child的无参构造函数中,首先调用了this("dd"),这实际上是调用了Child类的有参构造函数但是,在子类Child的有参构造函数中,又调用了super("dd"),这......
  • Java父子类方法调用
    判定首先使用“instanceof”来判定在new了某个项目后两个类型之间的父子关系调用父类或子类方法首先明确两个项目的继承关系,同时执行父让子的原则,当两者方法名重复时,优先执行子类方法。当new父类所定义的变量名要使用子类的方法时(父类中没有该方法)要用括号将子类项目名括住......