标签: abstract-class

如何从java中的抽象类的子类访问已实例化的对象?

我希望能够访问从抽象类的子类实例化的对象.这是一个例子.

// A.java
public abstract class A {
  public int getNewNo() {
    int newNo = <Instance of B in this example here>.getNo() + 2;
    return newNo;
  }
}

// B.java
public class B extends A {
  public int getNo() {
    return 2;
  }
}

// C.java
public class C {
  public C(A a) {
    System.out.println("The number is "+a.getNewNo());
  }
}

// example.java
public void main(String args[]) {
  B b = new B();
  C c = new C(b);
  // should now …
Run Code Online (Sandbox Code Playgroud)

java abstract-class class subclass instance

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

用例类作为Scala中的消息

我在Horstman书(第291-292页)中的示例代码中定义和使用案例类 作为简单Scala actor系统中的消息.

问题是在接收模式匹配中没有识别类,并且控制正在落入case _ =>语句.

代码如下所示.一切都适用于非案例类消息.

SENDER:在演员Rcoord中,行为方法是:

def act() {
  alive(9000) 
  register('rcoord, self) 
  proc_reg.start                   // start the process register actor  

  loop {
    try {
      receive {
        case 'process => 
          process_counter += 1
          process_number = process_counter
          spawn_process(process_number, sprocs)
          case class CreateTS(xxx: Int)
          proc_reg ! CreateTS(process_number)

        case 'stats => 
          Console.println("received msg from client to view statistics")
          //sender ! 'ok

        case 'stop => 
          Console.println("received msg that client is terminating")
          //sender ! 'bye
      } // end receive …
Run Code Online (Sandbox Code Playgroud)

abstract-class scala case message-passing

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

无法访问派生类中的公共属性

我有一个abstract class由另一个类继承的如下:

public abstract class Employee
{
        public string name{ get; set; }
        public string age { get; set; }
}

public class OtherEmployee : Employee
    {
        public OtherEmployee()
        {
        }

        public string specialField{ get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我正在做的事情,不知怎的,没有完成它:

Employee otherEmployee= new OtherEmployee();
otherEmployee.specialField = "somevalue";
Run Code Online (Sandbox Code Playgroud)

我没有获得访问权限specialField,而所有属性Employee都是可访问的.我知道这是一个微不足道的问题,但我在这里遇到了障碍.

c# inheritance abstract-class derived-class

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

接口实现和通用功能

我有以下要求,

  • 将有2个(或更多)不同的类来执行相同类型的操作(以不同的方式).因此我决定创建一个界面.然后我用我的界面实现了这两个类.
  • 现在,从另一个类我将使用Interface类型的对象并调用函数.一切正常.
  • 然后一个新的要求来创建一个适用于这两个类的通用功能.
  • 我不想在两个类中定义相同的功能.并且接口不允许函数定义.
  • 首先,我认为抽象类是有用的.因为它允许函数定义和抽象函数.但抽象类不能实例化,我还需要创建具有单独类类型的对象.

对不起,我找不到一个简单的方法来定义我的问题.感觉就像Spring框架提供的解决方案.但我需要知道如何从Java/C#应用程序中实现这一点.

c# java oop abstract-class interface

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

班级不抽象吗?

private class HandlerClass implements ActionListener
    {
        public void actionPerfomed(ActionEvent event)
        {
            JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand));
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的代码的一部分,当我编译时,我得到一个错误,说HandlerClass不是抽象的,不会覆盖抽象方法actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener.据我所知,actionPerformed应该覆盖HandlerClass不应该吗?我已经尝试abstract在单词class之前添加" "但是我得到了另一个错误,因为我无法调用抽象类.我不确定是否可以用一个例外来解决这个问题?

java abstract-class overriding compiler-errors exception

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

抽象类和派生类的输出运算符(<<)

我有2个类,一个抽象基类和派生类.但由于某种原因,我不能正确地重载两个输出运算符.

这是基类:

class team
{
    char* team_name;
    int games_played;

public:
    team(const char* tname);
    virtual ~team();
    virtual void update_lpoints(const int win_loss)=0;
    friend std:: ostream& operator<< (std :: ostream& out, team& T);    
};

std:: ostream& operator<< (std :: ostream& out, team& T);
Run Code Online (Sandbox Code Playgroud)

这是输出运算符:

std:: ostream& operator<< (std :: ostream& out, team& T)
{
    return (out<<T.team_name<<" "<<T.games_played);
}
Run Code Online (Sandbox Code Playgroud)

派生类:

class BasketTeam : public team
{
    int league_points;
    int points_for;
    int points_against;

public:
        BasketTeam(const char* tname);  
        ~BasketTeam();

        friend std:: ostream& operator<< (std :: ostream& …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance abstract-class operator-overloading

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

Java:如何确定抽象类型的具体类型?

我有一个方法

public static Set<MyClass> doSomething(Set<MyClass> oldSet) {

  //I don't necessarily want this to be a HashSet
  Set<MyClass> newSet = new HashSet<MyClass>();

  //Add some things to newSet

  return newSet;
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以返回与Set中传递的相同的具体类型?(无需返回oldSet).不幸的是,无法克隆集.

如果oldSet是一个TreeSet,我还希望返回的set(newSet)是一个TreeSet.

java abstract-class

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

没有方法的抽象类

是否有一个用例我们需要一个没有定义方法的抽象类?我只是为了泛型而创建了这样一个抽象类,以便用户只传递这个类的子类型.但是我想知道它们是否有效或是否有更好的方法.

java abstract-class

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

在实现的抽象类中转换泛型类型

我想用一个采用泛型类型的抽象方法创建一个抽象类.我的实现类方法将使用该类型执行某些操作,但因为它的通用我无法访问方法中传递的真实对象的属性.如果我尝试进行转换,那么它将无法编译,因为您无法转换为T类型.我的意思的一个例子.

public abstract class TestAbstractClass
{
    public abstract void Method<T>(ref IQueryable<T> query);
}

public class TestA:TestAbstractClass
{
   // T in this class is an object with a property called Forename
   public override void Method<T>(ref IQueryable<T> query)
   {
       query = query.OrderBy(o=>o.Forename); // unaware of property forename
       query = ((IQueryable<Person>)query).OrderBy(o=>o.Forename); // breaks because of casting
   }
}

public class TestB:TestAbstractClass
{
   // T in this class is an object with a property called HandSize
   public override void Method<T>(ref IQueryable<T> query)
   {
       query …
Run Code Online (Sandbox Code Playgroud)

c# generics abstract-class casting

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

C#实现抽象类方法:我必须进行强制转换?

我有这两个班:

public abstract class Loop : Events
{ }

public class SimpleLoop : Loop
{
    public Sound sound;
    public SimpleLoop simple;
}
Run Code Online (Sandbox Code Playgroud)

我有一个抽象方法的抽象类:

public abstract class AbstractParser
{
    public abstract Loop ParseLoop();
}
Run Code Online (Sandbox Code Playgroud)

这个扩展前一个类并实现抽象方法的其他类:

public class Parser2 : AbstractParser
{
    public override Loop ParseLoop()
    {
        //not important stuff
        simpleLoop.simple = (SimpleLoop) ParseLoop();
        return simpleLoop;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:有一种方法可以避免内部投射simpleLoop.simple = (SimpleLoop) ParseLoop()

显然我没有完全上课,所以不要问自己这个烂摊子的目的是什么:D谢谢你的帮助!

c# abstract-class casting

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