我们能在Java中创建public static abstract类吗?

8 浏览
0 Comments

我们能在Java中创建public static abstract类吗?

我在谷歌上搜索东西时,得到了一个像这样的代码:\n

public static abstract class LocationResult{
    public abstract void gotLocation(Location location);
}

\n这是一个嵌套类,但我想知道它是如何被访问的?

0
0 Comments

在Java中,只有嵌套类可以被声明为静态。通过这样做,我们可以在没有外部类实例的情况下使用嵌套类。

如果我们想要创建一个公共的静态抽象类,可能会遇到问题。在Java中,我们不能将类同时声明为静态和抽象。这是因为静态类是与类的实例无关的,而抽象类则需要被继承和实例化。因此,我们不能直接在Java中创建公共的静态抽象类。

然而,我们可以通过使用嵌套类来达到类似的效果。我们可以创建一个公共的嵌套类,并将其声明为抽象类。这样,我们可以在需要的地方继承并使用它。

例如,我们可以创建一个名为Mainclass的外部类,其中包含一个名为LocationResult的公共嵌套类。我们可以将LocationResult声明为抽象类,以便在需要的地方进行继承和实例化。

以下是一个示例代码:

public class Mainclass {
    // 外部类的其他成员
    
    public static abstract class LocationResult {
        // LocationResult的成员和方法
    }
    
    // 外部类的其他成员
}

这样,我们可以通过使用extends Mainclass.LocationResult来创建一个继承自LocationResult的类,并使用Mainclass.LocationResult instance = ...来使用它。

总结起来,虽然在Java中不能直接创建公共的静态抽象类,但我们可以通过创建公共的嵌套类并将其声明为抽象类来实现类似的效果。这样,我们可以在需要的地方继承并使用这个嵌套类。

0
0 Comments

在Java中,我们可以创建公共的静态抽象类吗?

在Java中,使用static关键字修饰类是合法的,但只能用于嵌套类。这些静态成员类与外部类没有引用关系,因此只能访问外部类中的静态字段和方法(与非静态成员类不同)。为了创建一个公共的静态抽象类,我们可以将它作为外部类的一个嵌套类。

以下是创建公共静态抽象类的示例代码:

public class EnclosingClass {
  public static abstract class LocationResult{
    public abstract void gotLocation(Location location);
  }
}
EnclosingClass.LocationResult locationResult = ...

另外,我们也可以通过其他的嵌套类来继承这个静态抽象类,并创建一个具体的子类进行实例化。

作为一个新手,我了解到我们不能直接实例化一个抽象类。但是,我们可以使用匿名类的形式来创建一个实例。就像其他抽象类一样,我们需要继承并创建一个具体的子类,然后通过向上转型的方式,用父类的类型来持有子类的引用。

关于为什么要在这里使用static关键字,我编辑了答案以更好地解释。

0