小编Bil*_*ill的帖子

覆盖Java中的私有方法

正如这里简洁描述的那样,在Java中覆盖私有方法是无效的,因为父类的私有方法是"自动最终的,并且从派生类中隐藏".我的问题主要是学术问题.

如何不允许父级的私有方法被"覆盖"(即,在子类中使用相同的签名独立实现),是不是违反封装?根据封装原则,子类无法访问或继承父级的私有方法.它是隐藏的.

那么,为什么要限制子类使用相同的名称/签名实现自己的方法呢?有没有一个很好的理论基础,或者这只是某种实用的解决方案?其他语言(C++或C#)对此有不同的规定吗?

java inheritance private-methods

58
推荐指数
4
解决办法
8万
查看次数

在泛型集合的泛型方法上使用表达式lambda

我试图理解下面使用lambda表达式.此代码取自Josh Smith出色的MVVM演示代码(http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090055).

方法调用如下:

AllCustomersViewModel workspace =
                this.Workspaces.FirstOrDefault(vm => vm is AllCustomersViewModel)
                as AllCustomersViewModel;
Run Code Online (Sandbox Code Playgroud)

如此处所使用的,FirstOrDefault具有以下定义,由Visual Studio 2010标识:

public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
Run Code Online (Sandbox Code Playgroud)

我不清楚

  1. 怎么vm得到它的类型?它没有在对象实例的其他地方定义.

  2. 如何FirstOrDefault(vm => vm is AllCustomersViewModel)满足source参数要求FirstOrDefault?这是某种暗示吗?

我一直在尝试使用这些资源来解析这个问题:

http://msdn.microsoft.com/en-us/library/bb397687.aspx

http://msdn.microsoft.com/en-us/library/bb397951.aspx

c# generics lambda mvvm

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

标签 统计

c# ×1

generics ×1

inheritance ×1

java ×1

lambda ×1

mvvm ×1

private-methods ×1