0 0

希望写一个类的抽象,使得实现它的类都包含返回自己的方法5

譬如有这么一个类
interface ITreeNode{
   public ITreeNode getParent(){return parent;}
   public List<ITreeNode> getSons() {return sons;}
}


现在的问题是:
如果有个类RealTreeNode从它继承,结果一定是这样:
class RealTreeNode implements ITreeNode{
   List<RealTreeNode> sons;
   RealTreeNode parent;
   public ITreeNode getParent(){return parent;}
   public List<ITreeNode> getSons() {return sons;}
}


我希望能是这样:
class RealTreeNode implement ITreeNode{
   List<RealTreeNode> sons;
   RealTreeNode parent;
   public RealTreeNode getParent(){return parent;}
   public List<RealTreeNode> getSons() {return sons;}
}


换句话说,我希望写这样的类的抽象,即包含两个方法getParent和getSons,它们返回该类自身List<该类自身>。应该如何写?
2014年7月22日 13:26

2个答案 按时间排序 按投票排序

0 0

采纳的答案

你试试这个,不知道行不

public abstract class ITreeNode<T extends ITreeNode> {
	List<ITreeNode> sons;
	ITreeNode parent;

	ITreeNode(List<ITreeNode> sons, ITreeNode parent) {
		this.sons = sons;
		this.parent = parent;
	}

	public abstract T getParent();

	public abstract List<T> getSons();
}

2014年7月22日 14:26
0 0

你连继承和接口都没分清楚

2014年7月22日 13:48

相关推荐

    Java:使用抽象类定义一个“形状类”,能够计算周长和面积。

    首先,我们可以定义一个名为`Shape`的抽象类,它包含两个抽象方法:`getPerimeter()`用于计算周长,`getArea()`用于计算面积。这两个方法应该返回`double`类型的值,因为周长和面积可能不是整数。抽象方法没有具体...

    Java 抽象类

    抽象方法不包含任何实现代码,只定义了方法签名,包括返回类型、方法名和参数列表。例如: ```java abstract void doSomething(); ``` 3. **继承抽象类** 子类继承抽象类时,必须提供抽象方法的具体实现,...

    工厂方法和抽象工厂——Factory Method & Abstract Factory

    - **抽象工厂(Abstract Factory)**:定义创建一组相关或相互依赖对象的接口,不直接实例化对象,而是返回一个实现了具体工厂接口的对象。 - **具体工厂(Concrete Factory)**:实现抽象工厂接口,提供具体的...

    抽象方法简单工厂

    当一个类包含抽象方法时,该类必须被声明为抽象类。子类继承抽象类后,必须实现其所有抽象方法,否则子类也将成为抽象类。 现在我们来看如何用抽象方法实现简单工厂模式。简单工厂模式通常包含三个主要角色:工厂类...

    接口抽象类

    如果一个类包含至少一个抽象方法,那么这个类必须被声明为抽象的。 接口和抽象类在使用上有一些关键的区别: 1. 实现方式:类可以实现多个接口,但只能继承一个抽象类。这是Java多态性的一种体现,它支持"接口多...

    java中抽象类与抽象方法的使用问题.docx

    例如,在设计一个图形绘制系统时,可以定义一个抽象类`Shape`,它包含一个抽象方法`draw()`,所有具体形状类(如`Circle`、`Rectangle`等)都继承自`Shape`类,并且必须实现`draw()`方法。 #### 五、代码示例解析 ...

    抽象工厂模式实现

    抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而无需明确指定具体类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需知道它们的具体实现。 在...

    Java面向对象程序设计抽象方法、抽象类.ppt

    上述代码定义了一个名为`eat`的抽象方法,它返回一个`String`类型的结果。由于没有方法体,这意味着在定义该方法的类中,我们必须声明该类为抽象类,使用`abstract`关键字修饰: ```java public abstract class ...

    抽象工厂模式例子代码

    抽象工厂本身不创建对象,而是返回一个实现了具体产品的接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,负责具体对象的创建。每个具体工厂对应一个特定的产品族。 3. 抽象产品(Abstract Product):...

    抽象类和接口

    当一个类包含一个或多个抽象方法时,该类也必须声明为抽象类。 - **代码重用**:子类可以继承抽象父类中的具体方法和属性,实现代码复用。 - **规划功能**:通过定义抽象方法,抽象类可以为子类规定一组必须实现...

    接口与抽象类的主要区别

    接口则是一个完全抽象的类型,它只包含方法、属性、索引器和事件的签名,而不包含实现。接口用于定义对象必须遵循的特定行为规范,而不是表示类别。一个类可以实现多个接口,这体现了“has-a”或“behaves-like”...

    工厂方法模式和抽象工厂模式的区别

    例如,假设有一个`ClothesFactory`接口,它有一个方法`createClothing()`,这个方法返回一个`Clothing`对象。然后,我们可以创建多个实现`ClothesFactory`的子类,如`ShirtFactory`、`PantsFactory`,每个子类重写`...

    抽象工厂模式代码

    抽象工厂模式是软件设计模式中的一种,属于创建型模式,它的主要目的是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在实际应用中,当我们需要创建一组具有共同特性的对象,而这些对象分别...

    格斗类游戏软件——抽象工厂模式

    接着,对于每个难度级别,我们创建一个具体的工厂类(如`BCreator`、`ACreator`),它们实现了抽象工厂接口,并返回特定等级的敌人实例(这些实例可能是`ProductA`或`ProductB`,代表不同级别的士兵或怪兽)。...

    抽象工厂实现访问多多种数据库

    抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式在IT行业中广泛应用于数据库访问,因为不同的数据库系统(如Access、SQL Server、Oracle等)有着各自特定的...

    设计模式--抽象工厂模式实现多数据库连接

    抽象工厂通常包含一个或多个抽象类或接口,这些抽象类或接口定义了创建特定类型产品的方法。在我们的例子中,这些产品可能是代表数据库连接的类,如`DbConnection`、`DbCommand`、`DbDataAdapter`等。抽象工厂的实现...

    继承,虚函数,抽象类

    首先,**继承**是面向对象编程的一种特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和方法。通过继承,子类可以复用父类的功能,而不必重新编写相同的代码。这有助于减少代码重复,提高代码的...

    计算器(抽象数据类型设计与实现)

    计算器是计算机科学中一个基本而重要的概念,它模拟人类计算过程,执行数学运算。在这个案例中,我们关注的是“抽象数据类型”(ADT)在计算器设计与实现中的应用。抽象数据类型是一种高级编程概念,它允许我们定义...

    抽象工厂实现多种数据库访问

    抽象工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象集合的接口,而这些对象都属于一个家族,可以互相协作。在本例中,我们使用抽象工厂模式来实现对不同数据库(如SQL和Access)的访问。通过这种...

    面向对(重写,this,super,抽象类)}

    如果一个类包含抽象方法,那么该类也必须声明为抽象类。抽象类的存在允许定义一组公共接口,而具体的实现由子类提供。 6. **抽象类的意义**: 抽象类用于定义共同的接口,而具体的实现由子类根据需要进行。这样...

Global site tag (gtag.js) - Google Analytics