标签: abstract

105
推荐指数
5
解决办法
10万
查看次数

如何在JavaScript中创建抽象基类?

是否可以在JavaScript中模拟抽象基类?最优雅的方式是什么?

说,我想做一些事情: -

var cat = new Animal('cat');
var dog = new Animal('dog');

cat.say();
dog.say();
Run Code Online (Sandbox Code Playgroud)

应输出:'bark','meow'

javascript oop abstract

102
推荐指数
11
解决办法
9万
查看次数

为什么不抽象领域?

为什么Java类不能像抽象方法一样具有抽象字段?

例如:我有两个扩展相同抽象基类的类.这两个类每个都有一个相同的方法,除了一个String常量,它常常是一个错误消息.如果字段可以是抽象的,我可以使这个常量抽象,并将方法拉入基类.相反,我必须创建一个抽象方法,getErrMsg()在这种情况下调用,返回String,在两个派生类中重写此方法,然后我可以拉出方法(现在调用抽象方法).

为什么我不能开始抽象领域?Java可以设计为允许这样吗?

java methods field abstract

92
推荐指数
2
解决办法
5万
查看次数

Swift - 类方法,必须由子类重写

是否有一种在Swift中制作"纯虚函数"的标准方法,即.一个必须被每个子类覆盖的,如果不是,会导致编译时错误?

abstract swift swift-protocols

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

为什么给一个"抽象:真实"状态的网址?

我今天正试图用ui-router来试图更好地理解Ionic中的脚手架,我注意到的一件事是他们给了抽象状态的"标签"一个网址.

我曾经使用抽象状态的唯一一次,我使用空字符串作为url,我注意到如果我偶然尝试导航到抽象状态(而不是子状态),我会得到错误:

无法过渡到抽象状态'[insertAbstractStateHere]'

编辑:

"而且,在实验中,当我尝试将一个网址分配给我的抽象状态(离开Ionic)并仍然呈现嵌套状态视图时,我得到一个大鹅蛋.根本没有任何东西出现."

上面引用的陈述是假的!我在Plunker再试一次,嵌套状态确实出现了.

 angular.module('routingExperiments', ['ui.router'])
      .config(function($urlRouterProvider, $stateProvider) {

    $stateProvider

      .state('abstractExperiment', {
        abstract: true,
        url: '', //<--- seems as if any string can go here.
        templateUrl: 'abstractExperiment.html'
      })
      .state('abstractExperiment.test1', {
        url: '/test1',
        templateUrl: 'abstractTest1.html'
      });
  });
Run Code Online (Sandbox Code Playgroud)

显然我确实做错了.所以我的新问题是:

在采用抽象状态时,有没有理由使用命名状态而不是空字符串,或者它只是一种风格选择?

state abstract angularjs angular-ui-router ionic-framework

69
推荐指数
1
解决办法
5万
查看次数

Java 8中"功能接口"的精确定义

最近我开始探索Java 8,我无法理解Java功能实现lambda表达式所必需的"功能接口"的概念.有一个非常全面的 Java函数中的lambda函数指南,但我仍然坚持用于定义函数接口概念的章节.定义如下:

更确切地说,功能接口被定义为具有恰好一个抽象方法的任何接口.

然后他进入示例,其中一个是Comparator界面:

public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
} 
Run Code Online (Sandbox Code Playgroud)

我能够测试我可以使用lambda函数代替Comparator参数,它可以工作(即Collections.sort(list, (a, b) -> a-b)).

但是在Comparator接口中,两者compareequals方法都是抽象的,这意味着它有两个抽象方法.那么如果定义要求接口只有一个抽象方法,那么它如何工作呢?我在这里错过了什么?

lambda abstract java-8 functional-interface

66
推荐指数
2
解决办法
7707
查看次数

Scala的密封抽象与抽象类

sealed abstractabstractScala类有什么区别?

scala class abstract sealed

64
推荐指数
2
解决办法
2万
查看次数

如何强制在我的抽象类的所有子类中定义构造函数

我有一个定义抽象方法的抽象类A. 这意味着,对于要实现的类,必须实现所有抽象方法.

我希望我的所有子类都实现一个带有2个int作为参数的构造函数.

声明构造函数会破坏我的目的,因为我想要在子类中定义的构造函数,我对实现一无所知.而且我不能将构造函数声明为抽象;

有没有办法做到这一点 ?

我想要的例子:

让我们说我正在定义Matrix类的API.在我的问题中,Matrix无法改变其尺寸.

要创建Matrix,我需要提供它的大小.

因此,我希望我的所有实现者都为构造函数提供大小作为参数.这个构造函数的动机是问题,而不是实现问题.只要保留了方法的所有语义,实现就可以用它们做任何事情.

假设我想invert()在抽象类中提供该方法的基本实现.此方法将创建具有this反转尺寸的新矩阵.更具体地说,正如它在抽象类中定义的那样,它将this使用带有两个整数的构造函数创建同一类的新实例.由于它不知道实例,它将使用反射(getDefinedConstructor),我想要一种方式来保证我会得到它,并且它将对实现有意义.

java constructor abstract

64
推荐指数
2
解决办法
5万
查看次数

C++抽象类:构造函数是或否?

具有一个(或多个)虚拟纯函数的类是抽象的,并且它不能用于创建新对象,因此它没有构造函数.

我正在读一本提供以下示例的书:

class Employee {
   public:
       Employee(const char*, const char*);
       ~Employee();
       const char* getFirstName() const;
       const char* getLastName() const;


       virtual double earnings() const=0  // pure virtual => abstract class
       virtual void print() const

  private:
       char* firstName, lastName;
};
Run Code Online (Sandbox Code Playgroud)

如果类是抽象的,为什么我们有一个构造函数?它稍后使用此类(Boss是公共派生的Employee):

void Boss::Boss (const char* first, const char* last, double s)
     : Employee (first, last)
Run Code Online (Sandbox Code Playgroud)

c++ constructor class abstract

59
推荐指数
4
解决办法
7万
查看次数

抽象属性(不是属性)?

定义抽象实例属性的最佳实践是什么,而不是属性?

我想写一些类似的东西:

class AbstractFoo(metaclass=ABCMeta):

    @property
    @abstractmethod
    def bar(self):
        pass

class Foo(AbstractFoo):

    def __init__(self):
        self.bar = 3
Run Code Online (Sandbox Code Playgroud)

代替:

class Foo(AbstractFoo):

    def __init__(self):
        self._bar = 3

    @property
    def bar(self):
        return self._bar

    @bar.setter
    def setbar(self, bar):
        self._bar = bar

    @bar.deleter
    def delbar(self):
        del self._bar
Run Code Online (Sandbox Code Playgroud)

属性很方便,但对于不需要计算的简单属性,它们是一种过度杀伤.这对于将由用户进行子类化和实现的抽象类尤其重要(我不想强迫某人@property在他刚写入self.foo = foo时使用__init__).

Python问题中的抽象属性建议仅作为使用的答案,@property并且@abstractmethod:它不回答我的问题.

抽象类属性的ActiveState配方AbstractAttribute可能是正确的方法,但我不确定.它也只适用于类属性而不适用于实例属性.

python abstract

56
推荐指数
5
解决办法
2万
查看次数