Java Classes versus C++ Classes

Java Classes versus C++ Classes

本文关键字:Classes C++ versus Java      更新时间:2023-10-16

我刚开始学习为Android开发,我来自严格意义上的C++背景。我发现Java不支持多重继承,但我们真的必须为每个新的活动创建一个单独的.Java文件吗?

我有一个TabActivity,还有3个Activity组成了选项卡。我想在其中一个选项卡上创建一个列表视图,但我开始感到困惑。我需要制作另一个扩展ListActivity的.java文件吗?如果我需要为每个活动创建一个单独的.java文件,我可以看到即使是相对较小的应用程序也会变得非常大。

旁注

如果我想将ListView添加到我的一个选项卡中,我该怎么做?到目前为止,我没有发现任何内容提到如何将新活动添加到其他活动中。

其他答案给出了关于接口的好观点,这可能更符合您的需求。然而,要了解更多信息,不,您不必为每个新类创建一个新的.java文件,还有其他选择。然而,请记住,更多的课程并不一定是坏事。您的选择是。。。

嵌套类:

public class A {
    public/private class B {
    }
}

B的实例可以访问A的私有变量,但如果没有A的实例就无法构建(这是一种常用于按钮处理程序等的方法)

嵌套静态类:

public class A {
    public/private static class B {
    }
}

B的实例不能访问A的私有变量,但它们不需要构造A的实例。如果B被声明为public,则可以在任何地方实例化B的实例;如果B被宣布为private,则只能在A的方法中实例化。

匿名类:

public class A {
    private void setupLayout() {
        ...
        button.addClickListener(new ActionListener() {
            public void actionPerfored(ActionEvent e)
            {
                handleClick();   
            }
        });
    }
}

这种奇怪的语法创建了一个没有名称的类,其功能与嵌套类相同(例如,可以访问私有变量)。这是编写嵌套类的另一种形式,有时会更短,但会导致非常奇怪的语法。

Java不支持对抽象类或普通类的多重继承,而只支持对接口的多重继承。

您可以创建扩展特定Activity的抽象类,并不断创建抽象类,直到您有了一个继承所有活动特性的类。

或者,有一个继承多个接口的类。

如果使用IDE来执行此操作,则创建大量文件的开销要小得多。

但是,有几种方法可以在同一个文件中拥有多个类。这包括a)使用内部/嵌套类b)匿名类c)枚举d)包本地类。

如果将一个类的定义分布在多个文件中,那么唯一不能做的事情就是很容易。

Java不支持多重继承

解决方法是使用接口

但是,我们真的必须为每个新的活动创建一个单独的.java文件吗

不,如果你的活动可以在现有的类中完成,或者可以在现有类中细分。Java是围绕为每个活动创建类而构建的。

Java不允许多重继承。但它确实允许实现多个interface。您不需要为每个class创建一个单独的文件(尽管这是一种很好的做法)。您可以将子类封装在文件的主class中。

ListView可以是简单的extended,您可以在xml等中使用相应的扩展类。

Java确实支持多重继承,如果您只是将基类抽象化,并将其称为interface而不是class

您可以简单地用XML声明一个ListView并在Activity中调用它,不需要单独的ListActivity,只需要为ListView。当你的整个Activity是一个ListView时。

根据对更多课程的担忧,这并不是一件坏事。更多的类意味着更面向对象,尽管不是严格意义上的(Everything都有限制)
由于死亡钻石的问题,多重继承被认为是不好的。因此,解决方法是使用Java中称为InterfacePure Virtual Classes(Interface在Objective-C中的意思是普通类)
我建议您阅读HeadFirst Java第二版,以便更好地掌握术语及其使用。这是一本适合初学者的好书。