我可以在java中使抽象类成为普通类的子类

时间:2016-03-26 12:03:49

标签: java

是否可以使抽象类成为普通类的子类?如果可能,请回答代码或方案。 像这样。 A级 { }

抽象类B扩展了A. { }

3 个答案:

答案 0 :(得分:3)

是的,确实如此。您已在问题中提供了有效代码。你问为什么不在问之前检查它?

答案 1 :(得分:1)

是的,你可以做到。抽象类可以扩展另一个非最终类,其中至少有一个非私有构造函数。声明abstract的类可以进一步扩展,以提供abstract APIs(方法)的具体实现。

abstract类的含义是声明抽象合同。这些是由抽象方法的签名提供的(只有签名且没有正文的方法,并使用关键字abstract声明)。其他类扩展抽象类,并根据在基本抽象类中声明的java doc和签名为抽象方法提供具体实现。

答案 2 :(得分:0)

  

是否可以使抽象类成为普通类的子类?如果可能,请回答代码或方案。像这样。 A级{}

     

抽象类B扩展A {

是的,完全有可能。被抽象化并不妨碍它从具体的类中扩展。

抽象类的一般思想是提供公共属性和行为(尤其是要在其子类中单独实现的行为)。然而,抽象只是防止自己实例化。

如果我想将一些属性从具体类继承到抽象类仍然是合乎逻辑的,即使这种情况很少见。

简单(或更确切地说)一个例子:

在我看来,这是一种非常罕见的情况。但是,让我试着给你一个尽可能相关的例子。

想象一下具体的课程: Person

class Person
{
    String name;  //every person has name
    int age;      //every person has age

    //constructors & other methods not shown
}

你有一个抽象的课程: Student Student类是抽象的,其潜在的子类是:Part-Time StudentFull-Time Student

abstract class Student
{
    String name;    //every student has name
    int age;        //every student has age
    int grade;      //every student has a current grade (level of studies)

    //constructors & other methods not shown
}

由于每个 Student 也是 Person nameage,我可以这样做:

abstract class Student extends Person
{
    //name & age inherited
    int grade;

    //constructors & other methods not shown
}

上面可能不是我们可以拥有的最好的类设计,我们可以重新安排上面的类,使得抽象类位于层次结构的顶层,但这只是一个简单的例子,描述了这个想法抽象类仍然可以从具体类继承属性。