标签: abstract

Java:抽象类构造函数和this()

有人能指出我误解的是什么吗?

我有两个类,一个抽象和一个混凝土,如下:

public abstract class Abstract
{
    protected static int ORDER = 1;

    public static void main (String[] args)
    {
        Concrete c = new Concrete("Hello");
    }

    public Abstract()
    {
        Class c = this.getClass();
        System.out.println(ORDER++ + ": Class = " 
            + c.getSimpleName() 
            + "; Abstract's no-arg constructor called.");
    }

    public Abstract(String arg)
    {
        this();
        Class c = this.getClass();
        System.out.println(ORDER++ + ": Class = " 
            + c.getSimpleName() 
            + "; Abstract's 1-arg constructor called.");
    }
}
Run Code Online (Sandbox Code Playgroud)

public class Concrete extends Abstract
{ …
Run Code Online (Sandbox Code Playgroud)

java constructor this abstract

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

如何定义来自非模板基类的成员函数

我有一个非模板化的抽象基类.如何在派生类之外定义纯虚函数?

    #include <iostream>

    class base {
         public:
         virtual void func() = 0;
    };

    template<typename T>
    class der : public base{
    };

    template<typename T>
    void der<T>::func()
    {
         std::cout<<"In Der";
    }
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

template.cpp:13: error: no ‘void der<T>::func()’ member function declared in class ‘der<T>’
template.cpp:13: error: template definition of non-template ‘void der<T>::func()’
Run Code Online (Sandbox Code Playgroud)

c++ templates abstract

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

强制用户在Java中声明变量

所以,我一直在研究Java中的抽象类和接口,我想知道是否有一种方法(可能不使用?)来强制用户声明具有某些名称的变量.

我正在使用注释,因此目标是制作一些接口或抽象的东西:

public interface Foo{
    Integer x;
    Double y;
}
Run Code Online (Sandbox Code Playgroud)

然后我希望用户用这些变量类型填充它(尽管类型是可选的,只要它有名称)和名称,按照他们希望它们注释的方式进行注释.这可能吗?

java interface abstract

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

具有抽象参数的 C# 抽象方法

你好,我正在尝试实现一个结构,我需要能够在 C# 的抽象类中创建一个抽象方法,该方法有一个抽象对象作为参数..示例-

public abstract class AbstractMapper
{
     protected abstract AbstractObject doLoad(AbstractObject obj);
}

public abstract class UserMapper
{
     protected override User doLoad(User obj)
     {

     } 
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,“User”类扩展了“AbstractObject”类......这给我带来了编译错误。有人可以建议我应该如何实现上述目标吗?

c# extends abstract

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

枚举成员与类名冲突

我最近在处理一个小项目时产生了一系列错误的错误.这基本上是导致它的代码:

#include <memory>

enum derivedtype {B, C};

//abstract class
class A{};

class B : public A
{};
class C : public A
{};

int main()
{
  {
    std::unique_ptr<A> myb(new B);
    std::unique_ptr<A> myc(new C);
  }
}
Run Code Online (Sandbox Code Playgroud)

这产生了这个编译错误:

enumclasserror.cpp: In function ‘int main()’:
  enumclasserror.cpp:15:30: error: ‘B’ does not name a type
  std::unique_ptr<A> myb(new B);
                          ^
  enumclasserror.cpp:16:30: error: ‘C’ does not name a type
  std::unique_ptr<A> myc(new C);
Run Code Online (Sandbox Code Playgroud)

修复是在新的后添加class关键字:

std::unique_ptr<A> myb(new class B);
Run Code Online (Sandbox Code Playgroud)

现在,枚举被包含在原始代码中的abstact类的头文件中(这使得它更难以发现),但是从未明白过; 我原本无法想象枚举的成员会导致实例的创建失败.它花了我几个小时来找到那个bug.任何人都可以向我解释为什么会这样吗?新的内容对枚举有意义吗?

PS:这个错误是由一个使用clang的同事发现的,它提出了class关键字.正如你所看到的,我的Ubuntu上的标准c ++编译器没有...

c++ enums class derived abstract

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

在UML中,如果它们作为基类,我们应该将它们声明为抽象类吗?

我们正在学习UML课程.老师说:

如果每个类都充当其派生类的基类,则应将其声明为abstract.

在下图中,假设我们要获得class german shepherdclass labradorclass chien (Dog woof woof).是否有义务class chien成为一个抽象的阶级

在此输入图像描述

polymorphism uml class object abstract

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

NullPointerException 在抽象类的实现中的 Autowired 对象上

我的代码有一个奇怪的问题。我已经实现了template method pattern提供相同算法的不同实现。所以我创建了抽象类:

@Service
public abstract class ExcelRdi_Iupr_Sl {
    @Autowired
    private Environment env;

    private static String PROPERTY_NAME_FILESYSTEM_EXCELPATH = "temporary.excelpath";
    private XSSFWorkbook workbook; 
    private XSSFCellStyle unlockedNumericStyle;
    private XSSFSheet sheet;

    /**
     * Create the excel file with the RDI,IUPR or SL
     * @param car
     * @param fileName
     * @return
     * @throws Exception
     */
    public final String retrieve(Car car, String fileName) throws Exception{
        writeInitialize();
        Map<Integer,Integer> defMap = firstTwoRow(car, sheet);
        elaboration(car, sheet, unlockedNumericStyle, defMap);
        return writeFile(car, fileName);
    }

    /**
     * Import the …
Run Code Online (Sandbox Code Playgroud)

java spring design-patterns abstract autowired

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

什么会导致使用 Android Studio 的 RoomDatabase 文件中不允许使用修饰符“抽象”?

我正在学习使用 Android Studio,并且通常按照在线教程开发一个简单的应用程序,该应用程序使用 Room 等架构进行数据库访问和管理。我已经编写了 Entity 和 Dao 文件,但是在数据库文件中,对 Dao 文件的引用给出了警告“此处不允许使用修饰符‘抽象’”。我不确定这是否会随着项目的发展而在以后“修复”,但教程中没有提到类似的东西。

我尝试删除和重新生成文件,重新同步和交叉检查行与可比较的工作代码。谷歌搜索没有产生真正可比较的比较条件。

package org.ivanhoegc.ivanhoegolfscoringapp;

import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

@Database(entities = {Scoring.class}, version = 1)
public abstract class ScoringDatabase extends RoomDatabase {

    private static ScoringDatabase instance;

    public abstract ScoringDao scoringDao;

    public static synchronized ScoringDatabase getInstance(Context context){
        if(instance == null){
            instance = Room.databaseBuilder(context.getApplicationContext(),
            ScoringDatabase.class, "scoring_database")
            .fallbackToDestructiveMigration()
            .build();
        }
        return instance;
    }


}
Run Code Online (Sandbox Code Playgroud)

代码是整个数据库定义文件,有问题的代码行是一个'public abstract ScoringDao etc

database android dao syntax-error abstract

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

微软是怎么做到的:静态类中的抽象方法?

据我所知,抽象方法只能存在于抽象类中。尽管如此,我可以看到微软这样做了(在 Xamarin.Forms 中):

  public static class DependencyService
  {
    ….
        public static void Register<T>() where T : class;
    ….
  }
Run Code Online (Sandbox Code Playgroud)

这是非抽象类中的抽象方法。怎么会这样?

c# static abstract xamarin

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

如何在现有语言中指定不同语言结构的抽象语法?

我试图解决在 Haskell 中指定不同语言结构的抽象语法的问题,例如变量声明、数组声明、if-else 语句等,但我对这意味着什么感到困惑。这只是 Haskell 中的样子吗?以下是我负责的语言构造之一:

  • 变量声明
    • 无类型的
    • 变量声明还可以选择指定初始值(具体语法示例var x = 10;:)
      • 初始值只能是整数/布尔值/字符串文字

我尝试解决上述问题并写下: var = int | 布尔 | 细绳

当我负责以下语言结构时,我感到相当困惑:

  • 算术表达式
    • 原始表达式:
      • 有些被认为是理所当然的(即不需要指定):整数文字、布尔文字、字符串文字
      • 使用变量
      • 访问类成员
      • 索引数组元素
      • 函数调用
      • (可能需要其他原始表达式)因为我不确定如何开始。

我本质上只是问我是否正确理解这一点,因为我似乎在其他地方找不到任何例子,以及我是否可以获得任何提示来更好地帮助我理解。我也不确定这个网站是否是问这个问题的正确地方,因为它看起来比平时更加​​理论化,所以如果这是错误的地方,请指出另一个可能更合适的论坛。预先感谢您的任何帮助。

syntax haskell abstract

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