我希望能够访问从抽象类的子类实例化的对象.这是一个例子.
// 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) 我在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由另一个类继承的如下:
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都是可访问的.我知道这是一个微不足道的问题,但我在这里遇到了障碍.
我有以下要求,
对不起,我找不到一个简单的方法来定义我的问题.感觉就像Spring框架提供的解决方案.但我需要知道如何从Java/C#应用程序中实现这一点.
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之前添加" "但是我得到了另一个错误,因为我无法调用抽象类.我不确定是否可以用一个例外来解决这个问题?
我有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) 我有一个方法
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.
是否有一个用例我们需要一个没有定义方法的抽象类?我只是为了泛型而创建了这样一个抽象类,以便用户只传递这个类的子类型.但是我想知道它们是否有效或是否有更好的方法.
我想用一个采用泛型类型的抽象方法创建一个抽象类.我的实现类方法将使用该类型执行某些操作,但因为它的通用我无法访问方法中传递的真实对象的属性.如果我尝试进行转换,那么它将无法编译,因为您无法转换为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) 我有这两个班:
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谢谢你的帮助!