面试遇到的问题总结 20220526

面试遇到的问题总结

时间 : 2022/5/26

面试岗位 : WPF上位机工程师

问题1.工厂模式和简单工厂模式的区别

答:简单工厂模式是类的创建模式,又叫做静态工厂方法模式.就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例

工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。
在这里插入图片描述

工厂模式是定义一个创建产品对象的工厂接口,让子类决定实例化哪一个类,将实际创建工作推迟到子类当中。工厂方法模型中,“工厂”创建的是还没有分化好的对象,其中没有逻辑判断相比于简单工厂模式,基类工厂去实现接口,子工厂去实现判断并能生产出相应功能的对象。
在这里插入图片描述

区别:

简单工厂 : 用来生产同一等级结构中的任意产品。(不支持拓展增加产品)

工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品)

抽象工厂 :用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族)

问题2.抽象方法与虚方法的区别

答:虚方法 关键字virtual

将方法添加关键字之后就是虚方法

public class Animal{
 
    public virtual void Speak(){
    // 这是一个虚方法
    }
}

虚方法可以被子类重写 关键字override

public class Dog : Animal{
 
    public override void Speak(){
        base.Speak();
        //重写父类的方法
    }
}

特点:虚方法更容易维护,修改或者维护时,可以不改动底层源码,直接修改它的重写方法

应用场景:鸡鸭狗猫,都会叫,就可以先定义一个虚方法为叫 然后在鸡鸭狗猫里面重写,更高效快捷的实现功能

抽象方法 关键字 abstract

///抽象类
public abstract class AbsParent
{
    ///抽象方法
    public abstract void AbsTest();
 
}

继承抽象类和抽象方法

public class AbsChild: AbsParent
{
    public override void AbsTest()
    {
       //实现抽象类
       //无法使用base.AbsTest()
    }
}

继承抽象方法不能使用base.AbsTest,因为它没有方法实体

 public class AbsGroundSun : AbsChild
{
    public override void AbsTest()
    {
        base.AbsTest();
    }
}

特点:抽象方法必须放在抽象类中

抽象类被实现的时候必须实现里面的全部抽象方法

区别:抽象方法只有一个规范没有实体,虚方法有自己的方法主体,子类可以继承他之后还可以调用他的方法

`

特点:抽象方法必须放在抽象类中

抽象类被实现的时候必须实现里面的全部抽象方法

区别:抽象方法只有一个规范没有实体,虚方法有自己的方法主体,子类可以继承他之后还可以调用他的方法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值