接口多态实现窗体传递

    public interface IFillAreas
    {
        void FillAreas(string ids, string names);  //接口中定义方法签名
    }
    public partial class FrmPerson : Form,interfaces.IFillAreas     //窗体继承于接
        private void btnChoice_Click(object sender, EventArgs e)
        {
            FrmAreas frm = new FrmAreas((interfaces.IFillAreas)this);    //将窗体强转为接口类型,进行传递
            frm.ShowDialog();
        }

        public void FillAreas(string ids, string names)    //接口方法的具体实现
        {
            this.txtDistrict.Text = names;
            this.txtDistrict.Tag = ids;
        } 
        interfaces.IFillAreas Ifrm;   //定义一个接口类型

        public FrmAreas(interfaces.IFillAreas Ifrm)   //次窗体构造函数接受主窗体传回的接口类型的窗体
        {
            InitializeComponent();
            this.Ifrm = Ifrm;
        }
Ifrm.FillAreas(aids.ToString().Substring(0, aids.Length - 1), anames.ToString().Substring(0, anames.Length - 1));   //调用主窗体的方法

此方法的好处在于实现了多态,次窗体接受主窗体传回的接口类型窗体,从而只能调用接口方法,而保护了原主窗体的公有成员。

缺点在于本质还是一个窗体,所以还是可以将接口类型窗体强转为窗体,从而调用窗体的公有成员。

时间: 2024-11-09 06:10:48

接口多态实现窗体传递的相关文章

面向对象(接口 ,多态)

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口 ,接口是功能的集合 接口不能创建对象 (2)格式 父接口:public interface Tnter{ } 子类:public class interImp implements Itner{ } 接口的使用 1.接口不能创建对象 2.定义实现类来实现接口 实现的关键字 implements 3.重写抽象方法 4.创建实现类对象 调用方法 接口的特点 1.不需要被abstract 修饰 2.类实现接口,可以单实

我的学习之路_第二章_接口/多态

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口.接口是功能的集合 接口不能创建对象 (2)格式: 父接口: public interface Inter { } 子类: public class InterImpl implements Inter { } (3)接口的特点: A:不需要被abstract修饰. B:类实现接口,可以单实现,还可以多实现. C:接口可以继承接口,可以单继承,也可以多继承. D:接口与父类的功能可以重复,均代表要具备某种功能. (

委托实现窗体传递

委托可以将方法作为参数进行传递. public delegate void DGFillAreas(string ids,string names); //定义委托 //定义委托就是确定这个委托对象里面可以存储那一种签名(返回值/参数)的方法 //如这个委托就说明了以后这种类型的委托对象里面就只能存储 无返回值 有两个String类型参数的方法,委托里面可以存储多个这种签名的方法 private void btnChoice_Click(object sender, EventArgs e) {

JS加载获取父窗体传递的参数

JS加载获取父窗体传递的参数 $(document).ready(function () { var query = location.search.substring(1); var values = query.split("&"); for (var i = 0; i < values.length; i++) { var pos = values[i].indexOf('='); if (pos == -1) continue; var paramname = v

抽象类 接口 多态

一 抽象类(abstract) 抽象类的概念只抽取了很多类的方法的声明,方法声明用abstract修饰.一个类如果有抽象方法,那么这个类必须是抽象类.抽象类里边可以没有抽象方法,如果这么做只有一个目的:不让你创建这个类的对象.抽象类不能被实例化,不能创建对象.如果一个类继承抽象类,那么,它要么重写抽象类中的所有抽象方法,要么本身也是抽象类. 抽象类的成员成员变量:可以是常量,也可以是变量.子类可以直接继承抽象类中的成员变量.成员方法:可以是抽象的,也可以是非抽象的.抽象方法在子类中必须要被实现.

instanceof 操作符 接口 多态

instanceof 操作符result =  对象名称 instanceof 类型 参数:result:布尔类型. 对象名称:必选项,任意对象表达式. 类型:必选项,任意已定义的类,可以是api中的类,也可以说自定义的类. 说明:如果对象是这个类型的实例,则instanceof运算符返回true.如果对象不是指定类的一个实例,或者对象是null,则返回false Object类Object类是所有类的父类object类的作用object类中的方法 接口 是特殊的抽象类即所有方法都是抽象方法的类

接口--多态

1.写出定义接口的格式 interface A{     public abstract void work(); } 注: (1)接口的权限修饰符如果不标明,默认为default,仅可在本包中访问; (2)接口中的方法必须为抽象方法,且public abstract可以不写,默认为public abstract.实际开发中通常写为 public void work(); (3)接口的子类叫做实现类,命名方式一般为:接口名+Impl,如InterfaceImpl; (4)java8中有新特性,可

类实现Parcelable接口在Intent中传递

类实现了Parcelable接口就可以在Intent中传递   只要在类的定义中实现Parcelable接口 代码 1 package entity; 2 3 import android.os.Parcel; 4 import android.os.Parcelable; 5 6 public class Person implements Parcelable { 7 8 private int id; 9 private String name; 10 private String pas

C# 一个子窗体向父窗体传递参数的例子

一.编码思路 在父窗体使用Lambda表达式自定义事件赋给子窗体内定义的事件,通过在子窗体内调用事件实现传参 二.传递的参数 创建文件SomeUtility.cs,在类SomeUtility中声明结构ReturnStruct using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EventTest {