继承概念java..help

时间:2010-12-23 22:32:48

标签: java inheritance

如果有人能帮助我理解Java中的继承概念,我将非常感激。 以下代码是一个例子吗?

我的意思是WavPanel类实际上是JPanel的子类,它充当超类。

这是对的吗?

如果是这样意味着“JPanel有什么,也有WavPanel,但它更具体,因为通过它的方法,你可以做 别的东西“。

我错了吗?

谢谢你。 最大

import javax.swing.JPanel;
class WavPanel extends JPanel {

        List<Byte> audioBytes;
        List<Line2D.Double> lines;

        public WavPanel() {
            super();
            setBackground(Color.black);
            resetWaveform();
        }

        public void resetWaveform() {
            audioBytes = new ArrayList<Byte>();
            lines = new ArrayList<Line2D.Double>();
            repaint();
        }
}

5 个答案:

答案 0 :(得分:2)

你是对的。 WavPanel is a JPanel。但普通的JPanel中没有任何组件。这就是您扩展它的原因,以便您可以添加一些特定于WavPanel的行为

答案 1 :(得分:0)

是的,当您扩展时意味着您接受该类,并且能够为其添加更多属性。此外,所有对象的超类都是Object。

答案 2 :(得分:0)

您似乎直接从其定义中很好地理解了继承。事实上,类的子类具有其超类的所有方法和数据成员。但是,它们并不相同,因为子类具有更多特定的功能和数据成员,可以完成超类的更具体的任务。 (只是改写你所说的所有类的概括。)

虽然你似乎觉得你在一个随意的水平上不理解它。有很多在线资源可以通过示例进行教学,例如:

What's a good example for class inheritance?

答案 3 :(得分:0)

这也意味着你可以分配

JPanel mypanel = new WavPanel();

因为您使用自定义/更多功能扩展JPanel,为什么?因为WavPanel是一个JPanel。但是,您无法调用WavPanel类中实现的方法。

这个概念叫做多态。

如果你有3个不同的类都从名为Animal的超类继承方法/属性提供了一般方法,比如说'Run','Walk','Eat'等你可以在for循环中处理不同的对象类型因为延伸这个“动物”类的动物是动物。

Dog myDog = new Dog();
Horse myHorse = new Horse();
Cat myCat = new Cat();


ArrayList<Animal> myAnimals = new ArrayList<Animal>();

myAnimals.add(myDog);
myAnimals.add(myHorse);
myAnimals.add(myCat);

for (Animal animal : myAnimals) {
    animal.run();
} 

此示例假设您已创建了Animal类。

答案 4 :(得分:0)

继承概念通常用作向现有类添加新属性或操作的方法,但最重要的特性是真正的多态,如Andreas所解释的。很多GOF design pattern(例如T * emplate Method *, State Strategy ...)都基于多态性。

要继续,继承不仅适用于结构扩展,还适用于动态行为实现。例如,从上面提供的链接中查看策略设计模式。尽管样本都在C#中,但最重要的是理解这一理念。如果您想了解有关面向对象原则的更多信息,您应该查看一般责任分配软件原则(或模式),缩写为 GRASP