是否可以使抽象类成为普通类的子类?如果可能,请回答代码或方案。 像这样。 A级 { }
抽象类B扩展了A. { }
答案 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 Student
和Full-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
name
和age
,我可以这样做:
abstract class Student extends Person
{
//name & age inherited
int grade;
//constructors & other methods not shown
}
上面可能不是我们可以拥有的最好的类设计,我们可以重新安排上面的类,使得抽象类位于层次结构的顶层,但这只是一个简单的例子,描述了这个想法抽象类仍然可以从具体类继承属性。