标签: abstract-class

获取派生类来实现属性的最佳实践?

给定一个简单的类层次结构,其中每个类都是从抽象基类派生的.每个派生类都需要以某种方式提供一个枚举"值",基类将在某些基本方法中使用.
例如

基类:

public abstract class AbstractFoo
{
  bool SaveFoo()
  {
    switch (BarType){...}
  }

}
Run Code Online (Sandbox Code Playgroud)

和派生类

public class BananaFoo:AbstractFoo
{
  //barttype = fruit;
}

public class WhaleFoo:AbstractFoo
{
  //barttype = mammal;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过多种方法确保从AbstractFoo派生的所有类实现属性"enum BarType"

public abstract BarType BarType{get;}
Run Code Online (Sandbox Code Playgroud)

在每个派生类中,我可以实现BarType以返回正确的类型,或者添加一个抽象方法来执行非常类似的操作.

public BarType BarType{get{return _bartype;}}
Run Code Online (Sandbox Code Playgroud)

或者添加一个具体的方法来返回一个字段 - 然后我需要记住添加字段,但是输入的次数要少得多(C&P)?

建议的方法是什么?

c# inheritance abstract-class

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

可以将抽象类作为子类添加到HashMap中

我有一个方法

    exampleMethod(Map<String, Number> exMap). 
Run Code Online (Sandbox Code Playgroud)

我可以使用Number的子类(如Integer或Long)调用此方法吗?所以方法类就是

    A a = new A();
    a.exampleMethod(Map<"String, Integer"> intMap);
Run Code Online (Sandbox Code Playgroud)

谢谢

java abstract-class hashmap

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

调用新的Asynctask时定义onPostExecute

我创建了一个扩展类Asynctask.从多个活动中调用此类.它从网页获取一些数据.之后,根据url,数据将在onPostExecute方法中处理.现在我使用多个else if语句,但它有点不方便.

有没有办法onPostExecute在创建新的Activity的Activity中定义方法Asynctask.

我认为它可能适用于接口或抽象方法,但我不确定,也不知道如何.

java android abstract-class interface

0
推荐指数
2
解决办法
439
查看次数

Class.newInstance()如何使用方法?

我创建了一个抽象类,如下所示:

abstract class Chance
{

   public void setTeams(SportEvent aSportEvent)
   {
      firstTeam = aSportEvent.getFirstTeam();
      secondTeam = aSportEvent.getSecondTeam();
   }


   private int totalPlayedGames()
   {
      int playedAtHome = firstTeam.getHomePlayedGames();
      int playedAway = secondTeam.getAwayPlayedGames();
      int playedGames = playedAtHome + playedAway; 
      return playedGames;
   }


   private int totalScoredGoals()
   {
      int homeScoredGoals = firstTeam.getHomeScoredGoals();
      int awayScoredGoals = secondTeam.getAwayScoredGoals();
      int scoredGoals = homeScoredGoals + awayScoredGoals; 
      return scoredGoals;
   }

   abstract double getChance()

   Team firstTeam;
   Team secondTeam; 
}
Run Code Online (Sandbox Code Playgroud)

然后,当然,我有几个类的方法getChance()...

现在,我想创建一个类,在其中我可以获得getChance()这些新类的结果.我想用的东西是这样的:

Class aClass = Class.forName(chanceClass....);
Object obj = …
Run Code Online (Sandbox Code Playgroud)

java abstract-class class

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

覆盖抽象方法TimerTask.Run()

我在覆盖从TimerTask类运行的方法时遇到问题.

这是我的代码:

public class PGameCore 
{

    Toolkit toolKit;
    Timer   timer;

    public PGameCore(int clockIntervalInSeconds)
    {
        timer = new Timer();
        timer.schedule(new CoreTimer(), 1000 * clockIntervalInSeconds);
    }

    class CoreTimer extends TimerTask
    {
            public void Run()
            {
                System.out.println("BEEEP :)");
                toolKit.beep();
            }
    }

}
Run Code Online (Sandbox Code Playgroud)

问题在于:

class CoreTimer extends TimerTask
Run Code Online (Sandbox Code Playgroud)

我正在使用Netbeans.它说:"PGameCore.CoreTimer不是抽象的,不会覆盖TimerTask中的抽象方法run()."

java abstract-class overriding

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

抽象类初始化

我有一个抽象类:

abstract class Shape {

    public String color;
    public Shape() {
    }
     public void setColor(String c) {
        color = c;
    }
    public String getColor() {
        return color;
    }

    public double area() {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个提供非抽象方法然后我想初始化它像:

     Shape object = new Shape();
Run Code Online (Sandbox Code Playgroud)

所以在初始化时,它仍然给我一个错误,但为什么呢?如果我在类中提供一个抽象方法,那么可以理解该类无法初始化.在这种情况下,为什么还会出错?任何帮助,将不胜感激

java abstract-class abstract-methods

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

你可以初始化一个抽象类,以便以后可以将它设置为等于子类吗?

这就是我想要做的:

abstract class BaseAnimal;
class cat : BaseAnimal;
class dog : BaseAnimal;


var allAnimals = new list<BaseAnimal>();

foreach (var someVar in allVars)
{
    var myAnimal = new BaseAnimal();

    if (someVar == true)
    {
        myAnimal = new cat();
    }
    else
    {
        myAnimal = new dog();
    }


    /* do other things with myAnimal var */
    allAnimals.add(myAnimal);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情,或者我将不得不在每个IF语句中初始化变量然后复制其他东西/把它放在一个函数中并调用它两次?

c# abstract-class

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

c#抽象类构造函数

我在学习C#.我对抽象类有些担忧.抽象类不允许创建实例.为什么c#支持抽象类的构造函数.这里的主要目的是什么?

c# abstract-class

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

java抽象类用法

嗨,我想在Eclipse中执行此代码.

abstract class ShapeNew {
    int length;
    public abstract double area();
}
 class Rect extends Shape{
    Rect(int side){
        this.length = side;
    }
    public double area(){
        System.out.println("area of rectangle"+ length*length);
        return length*length;
    }



    /**
     * @param args
     */
public static class Area{
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ShapeNew rect = new Rect(32);// I am unable to use this. The eclipse throws an error//

        rect.area();
    }

}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我.为什么我无法将ShapeNew的引用分配给Rect的对象?我收到这个错误

Exception in thread "main" java.lang.Error: Unresolved compilation problem: …
Run Code Online (Sandbox Code Playgroud)

java abstract-class

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

私有构造函数在java中有什么用?

私有构造函数不允许创建对象,例如这里是代码..

class emp
{
    private emp()//private constructor
    {

    }
}

public class privateconstructor
{

    public static void main(String[] args)
    {
        emp e = new emp();//throws Error as constructor not visible

    }

}
Run Code Online (Sandbox Code Playgroud)

通过将类声明为抽象用户也可以防止创建对象.所以我的问题是为什么私有构造函数?
仅供参考:
虽然可以通过静态方法创建对象,例如..

class emp
{
    private emp()//private constructor
    {

    }
    static emp createInstance()//static method
    {
        return new emp();//returns an instance
    }

    void disp()
    {
        System.out.println("member function called");
    }
}

public class privateconstructor
{

    public static void main(String[] args)
    {
        emp e = emp.createInstance();//creating …
Run Code Online (Sandbox Code Playgroud)

java static constructor abstract-class

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