声明为final的以及所有java final 构造函数器都不在子类访问权限之内的类无法继承

子类如何继承抽象类的_中华文本库
4.声明为 final 的以及所有构造器都不在子类访问权限之内的类无法继承 其实只要是在类的继承中,无论抽象还是实体,都需要符合这个规则的。在这个继承试验中 随时...
D) 子类无法继承父类的构造函数。 10、下面说法正确的是(A )。 A) final 可修饰类、属性、方法。 B) abstract 可修饰类、属性、方法。 C) 定义抽象方法需...
) 因为子类继承父类, 会继承到父类中的数据, 所以必须要看父类是如何对自己...只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才 所有抽象...
《类、抽象类、接口、继承和对象(java)》-_建筑/土木_工程科技_专业资料。《...“人”这个类就可以定义一个抽象方法“悲伤”,由其子类“男人”和“女人”来...
一个子类只能够继承一个父类; · 抽象类的子类(如果不是抽象类) ,那么必须要覆写抽象类中的全部抽象方法; · 抽象类可以利用对象的向上转型机制,通过子类对象...
Java接口抽象类继承总结_工作总结/汇报_总结/汇报_实用文档。继承 作用:子类通过继承可以复用父类中的成员变量和方法 使用要求: 语法 class 类名 extends 父类名 ...
继承关系 2 永远不会出现将子类置换为另一个类的子类,如果不是很肯定一个类...掌握抽象的定义,掌握抽象方法的定义以及派生类如何实现抽象方法,理解使用抽象类的...
Java接口抽象类继承总结_计算机软件及应用_IT/计算机_专业资料。Java知识点总结,接口,抽象类,继承继承作用:子类通过继承可以复用父类中的成员变量和方法 使用要求: ...
? ? ? 子类与父类 子类的继承性 子类与对象 成员变量的隐藏和方法 重写 ? ? 对象的上转型对象 继承与多态 ? abstract类与 abstract方法 ? ? 面向抽象编程...他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)java中抽象类能不能继承实体类? - ITeye问答
抽象类:可以有构造器,可是又不可以创建对象。什么原因啊?如果能继承实体类。那继承实体类的意义何在?
抽象类是可继承实体类。没有问题。意义就是封装了后,再抽象,再封装。
可继承实体类
抽象类:可以有构造器,可是又不可以创建对象。什么原因啊?
当实体类B继承了抽象类A.当new B()的时候,会默认先调用抽象类的构造方法。
大致流程是 加载A-&加载B-&调用A的构造方法-&调用B的构造方法
lz可以找找java类的实例化顺序之类的文章。je上就有不少的。
我个人认为抽象类就是设计模式里面的模版方法
抽象类为父类添加了更多的行为。
class 动物 {
public void 动作() {
System.out.println("交配ing ...");
abstract class 人 extends 动物 {
public void 造人() {
super.动作();
public abstract void 受孕();
class 男人 extends 人 {
public void 受孕() {
//To change body of implemented methods use File | Settings | File Templates.
throw new IllegalStateException("不可能的任务");
class 女人 extends 人 {
public void 受孕() {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println("没有问题");
可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。
关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。
一般学习者会写的简单试验代码:
class A{}abstract class B extends A{}
结果完全正常,编译通过。似乎和“实体类必须有明确的构造函数”完全没有关系。
这个问题涉及到两个个基础知识:
1.所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。
2.所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。
所以,如果把系统默认配给的方法也算进去,class A{}的代码实际上是
public A(){}
}
B继承 A 的时候,则是
abstract class B extends A{
public B(){
}
要试验出这继承规则的内部情况,也很简单,在最上面那个简单试验代码里,加上个私有构造器,有参无参都行。
private A(){}
}
这个时候,如基础知识(1) 中所说,系统不再给你默认无参构造器, B的构造器根据(2)中的规则去调用super(),却找不到A的无参构造器,所以导致abstract class B extends A{} 编译不能通过。(因为A中没有任何构造器可供子类调用,其实这个时候A只能够供内部类继承,我用的Eclipse的3.4版本会建议给B改名,但是这解决不了这个问题。)
现在,你应该了解了资料给的那句语焉不详的“实体类必须有明确的构造函数”的含义:
1.没写构造器的,那是拥有默认无参公有构造函数的,子类可以什么都不写,让默认构造器去调用它。这是最初那两行代码的情况。
2.写了子类可访问的无参构造器的,也是一样,子类里可以什么都不写,用默认机制调用。
3.写了 有参构造器却没写无参构造器的,父类里没有子类可访问的无参构造器,子类必须在子类构造器里的第一句写明,调用父类有参构造器,并把参数传进去。
4.声明为final的以及所有构造器都不在子类访问权限之内的类无法继承
其实只要是在类的继承中,无论抽象还是实体,都需要符合这个规则的。在这个继承试验中随时删掉或是加上abstract的前缀,结果都没有变化。个人觉得“实体类必须有明确的构造函数”一句实在是无法把这个情况表达清楚,所以广大求职者还是写得清楚些好。
我喜欢的写法是“可以继承,但是和实体类的继承一样,也要求父类可继承,并且拥有子类可访问到的构造器。”
这个文章写的很详细了。
抽象类可继承实体 类,但前提是实体类必须有明确的构造函数。
所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。
2.
所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。
http://student.csdn.net/space.php?uid=109612&do=blog&id=18184
详细的说到了这个问题。
其实就是看做一般的类继承,抽象类作为子类拥有父类的特征。
具体意义就需要根据自己编程的需要了,这个不要解释,因为编程是一个人主观的想法,呵呵!!
抽象类是可继承实体类
抽象类可继承实体 类,但前提是实体类必须有明确的构造函数
已解决问题
未解决问题抽象类是否可以继承实体类的完整解答_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
抽象类是否可以继承实体类的完整解答
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 构造函数的声明 的文章

 

随机推荐