相关疑难解决方法(0)

Java中的public,protected,package-private和private有什么区别?

在Java中,有没有关于何时使用每个访问修饰符,即默认明确的规则(包私有)public,protected并且private,同时使classinterface和处理继承?

java private protected public access-modifiers

3004
推荐指数
24
解决办法
201万
查看次数

Liskov替代原则的例子是什么?

我听说Liskov替换原则(LSP)是面向对象设计的基本原则.它是什么以及它的使用例子是什么?

oop liskov-substitution-principle definition design-principles solid-principles

845
推荐指数
24
解决办法
29万
查看次数

控制反转与依赖注入

根据Martin Fowler撰写论文,控制反转是程序控制流程被颠倒的原则:代替程序员控制程序流程,外部源(框架,服务,其他组件)控制它.这就像我们把东西塞进别的东西.他提到了一个关于EJB 2.0的例子:

例如,会话Bean接口定义ejbRemove,ejbPassivate(存储到辅助存储)和ejbActivate(从被动状态恢复).你无法控制何时调用这些方法,只是它们的作用.容器打电话给我们,我们不打电话给它.

这导致框架和库之间的区别:

控制反转是使框架与库不同的关键部分.库本质上是一组可以调用的函数,这些日子通常组织成类.每个调用都会执行一些操作并将控制权返回给客户端.

我认为,DI是IOC的观点,意味着对象的依赖性被颠倒了:相反,它控制着自己的依赖关系,生命周期......还有其他东西为你做.但是,正如你用手告诉我的DI,DI不一定是IOC.我们仍然可以有DI而没有IOC.

然而,在本文中(来自pococapsule,另一个IOC C/C++框架),它表明,由于IOC和DI,IOC容器和DI框架远远优于J2EE,因为J2EE将框架代码混合到组件中因此不能成为普通的旧Java/C++对象(PO​​JO/POCO).

除依赖注入模式之外的控制容器的反转(存档链接)

附加阅读以了解旧的基于组件的开发框架的问题是什么,这导致了上面的第二篇论文:为什么以及什么是控制反转(存档链接)

我的问题:IOC和DI究竟是什么?我很迷惑.基于pococapsule,IOC比仅仅反转对象或程序员和框架之间的控制更重要.

dependency-injection inversion-of-control

467
推荐指数
14
解决办法
26万
查看次数

关联,聚合和组合有什么区别?

关联,聚合和组合有什么区别?请解释一下实施情况.

oop uml associations composition aggregation

361
推荐指数
18
解决办法
34万
查看次数

170
推荐指数
8
解决办法
7万
查看次数

什么是Swift中的面向协议编程?它带来了什么附加价值?

来自Apple自己的网站:"Swift设计的核心是两个非常强大的想法:面向协议的编程和一流的价值语义."

有人可以详细说明什么是面向协议的编程,它带来了什么附加价值?

我已阅读此内容并观看了Swift 视频中的面向协议编程,但是来自Objective-C背景仍然没有理解它.我恳请一个非常简单的英语答案,以及有关它与Objective-C有什么不同的代码片段和技术细节.

我所使用的混淆中只有一个<tableViewDelegate, CustomDelegate>难道我们也不能在Objective-C中使用多个协议吗?那么Swift又是如何新的?


编辑:请参阅面向协议的视图视频.我发现这个视频更基本,更容易掌握一个有意义的用例.WWDC视频本身有点先进,需要更广泛的视野.此外,这里的答案有点抽象.

oop protocols delegation objective-c swift2

25
推荐指数
4
解决办法
6398
查看次数

Swift 3:Public和Internal访问修饰符之间的区别?

我在Swift 3中阅读了Apple关于访问修饰符的参考资料.我在stackoverflow上也读过同样的内容,但是我没有得到答案.据我所知,有四个层次:

  1. 公开,公开
  2. 内部
  3. Fileprivate
  4. 私人的

我为自己创建了方案,以了解所有这些修饰符之间的差异并在此处上传.如您所见,公共修饰符和内部修饰符之间没有区别.但是它们处于不同的级别.任何想法将不胜感激!

oop inheritance public internal swift

11
推荐指数
5
解决办法
8188
查看次数

如何使用从基类继承的事件在抽象类中定义EventHandler?

我的意图是重用SelectedValueChangedComboBoxClass 继承的事件(反过来,继承自ListControlClass)

在下面的代码中:SelectedValueChanged标记有屏幕截图中显示的编译器错误.我不打算hiding继承事件,所以我不想使用new关键字.我希望从DRT_ComboBox_Abstract派生的类能够按原样使用继承的事件.

如何定义EventHandler使用从基类继承的事件?(或者,在理解事件方面,我完全离开这个星球吗?)

注:"显示潜在修复"包围public event EventHandler SelectedValueChanged#pragma warning disable CS0108刚刚禁用警告.

屏幕截图 在此输入图像描述

using System;
using System.Windows.Forms;

namespace DRT
{
    internal abstract partial class DRT_ComboBox_Abstract : ComboBox
    {
        //SelectedValueChanged is tagged with the compiler error shown in the screenshot
        public event EventHandler SelectedValueChanged;

        public DRT_ComboBox_Abstract()
        {
            InitializeComponent();
        }

        public void Disable()
        {
            this.Enabled = false;
        }

        public void _OnSelectedValueChanged(object sender, System.EventArgs e)
        { …
Run Code Online (Sandbox Code Playgroud)

c# events inheritance

2
推荐指数
1
解决办法
277
查看次数

c#是否可以更改父类的字段类型?

如果我有2个类,一个用于数据,例如:

public class Cords
{
    public double x;
    public double y;
}
Run Code Online (Sandbox Code Playgroud)

一,使用这些数据:

public class Geometry
{
    public Cords()
    {
        points = new List<Cords>();
    }
    public void SomeMathWithPoints()
    {
         MagicWithPoints(points);
    }

    protected List<Cords> points;
}
Run Code Online (Sandbox Code Playgroud)

我想用一些特定的函数,使用继承来扩展这个类,但这次我需要一些Cords类的附加数据.所以我试着这样做:

public class ExtendedCords: Cords
{
    public double x;
    public double y;
    public string name;
}

public class ExtendedGeometry : Geometry
{
     protected SomeNewMagicWithPoints(){...}
     protected List<ExtendedCords> points;
}
Run Code Online (Sandbox Code Playgroud)

但我注意到,如果我愿意:

    ExtendedGeometry myObject = new ExtendedGeometry();
    myObject.SomeMathWithPoints();
Run Code Online (Sandbox Code Playgroud)

此函数将使用旧(parrents)字段points.那么如何让它使用一个类型的新ExtendedCords?我的意思是,我希望能够在新领域使用child和parrent的功能.

c# oop inheritance field

1
推荐指数
1
解决办法
136
查看次数