什么是子类?

46

"subclass"在Java中是什么意思?

我知道类和方法,但不知道什么是子类。


请查看 java 标签维基 上提供的初学者链接。 - CoolBeans
18
这个页面实际上是在谷歌搜索“Java子类”后的第二个结果。Stack Overflow通常提供语法等方面更快的示例,但问题经常会被关闭,因为它们不够具有建设性。 - Brian Burns
8个回答

86

子类是扩展另一个类的类。

public class BaseClass{
    public String getFoo(){
        return "foo";
    }
}

public class SubClass extends BaseClass{
}

然后...

System.out.println(new SubClass().getFoo());

会打印:

foo

这个方法可行,因为子类会继承它所继承的类的功能。


3
这是 Java 中所谓的继承吗? - Master C
12
+1 对于任何人都能理解的简明解释。 - rzetterberg

10

子类是扩展现有类功能的一种方式。例如:

超类 - 描述对象的类别:

public abstract class Fruit {

    public abstract Color color;

}

Subclass1 - 描述了每个水果对象的属性:

public class Apple extends Fruit {

    Color color = red;

}

子类2 - 描述各个水果对象的属性:

public class Banana extends Fruit {

    Color color = yellow;

}

在超类中使用'abstract'关键字意味着该类仅定义了每个子类必须拥有的强制性信息,即水果必须有颜色,因此在超类中定义,并且所有子类必须 '继承'该属性并定义描述特定对象的值。

这样讲清楚了吗?


红苹果?哈哈 - user5698345

3
这是一个扩展另一个类的类。
示例摘自 https://www.java-tips.org/java-se-tips-100019/24-java-lang/784-what-is-a-java-subclass.html,Cat 是 Animal 的子类 :-)
public class Animal {

    public static void hide() {
        System.out.println("The hide method in Animal.");
    }

    public void override() {
        System.out.println("The override method in Animal.");
    }
}

public class Cat extends Animal {

    public static void hide() {
        System.out.println("The hide method in Cat.");
    }

    public void override() {
        System.out.println("The override method in Cat.");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        Animal myAnimal = (Animal)myCat;
        myAnimal.hide();
        myAnimal.override();
    }
}

3
子类是类的一种,就像Java是编程语言的一种。

2
如果你有以下内容:
public class A
{
}

public class B extends A
{
}

如果BA的子类,则B继承自A。相反,超类是指父类。


public class B : A 是否意味着 public class B extends A? - Master C

2

将类视为一组事物的成员描述。该集合的所有成员都具有共同的特征(方法和属性)。

子类是描述原始集合的特定子集的类。它们与主类共享许多特征,但可能具有仅适用于子类成员的属性或方法。

在Java中,您可以通过使用“extends”关键字声明一个类是另一个类的子类。

public class B extends A
{
...
}

B是A的子类。类B的实例将自动展示与类A的实例相同的许多属性。

这是面向对象编程中“继承”的主要概念。


那么抽象类必须包含至少一个强制信息,每个子类都必须拥有?包括方法?但是也可以包含自己的信息和方法,我不一定要使用(但仍然是一个选项)? - Master C
我认为抽象类没有必要特别地拥有任何属性。有时候,仅仅是由于一个类继承自抽象类这一事实就已足够。 (见“多态性”) - bpanulla

2

Java中的子类是继承自另一个类的类。

继承是一种让类在通用行为基础上添加专门行为的方法。这通常表示为“是一个”关系。

例如,Triangle是一个Shape,因此实现一个Shape类并使Triangle类继承它可能是有意义的。在这个例子中,ShapeTriangle的超类,而TriangleShape的子类。


0
子类是程序的一个小文件,它从其他类继承而来。例如,您可以创建一个关于汽车的一般类,并具有适用于所有汽车的基本信息、构造函数等,然后您可以创建一个从该类继承的更具体的汽车或汽车系列类,该类将具有新的变量/方法。我看到在我发布这篇文章之前,您已经有了很多代码示例,但我希望这个描述能够帮助您理解。

它不一定非要是自己的文件。 - F_V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接