-
【JAVA】关于继承关系中构造方法的问题5
父类Person,有无参构造方法Person(),和公用方法func().
子类Teacher,有无参构造方法Teacher(),有参构造方法Teacher(int a)和公用方法func().
代码如下:
class Teacher extends Person { public Teacher() { super(); } public Teacher(int a) { System.out.print(a); } public void func() { System.out.print("2,"); } public static void main(String[] args) { Teacher t1 = new Teacher(); Teacher t2 = new Teacher(3); } } class Person { public Person() { func(); } public void func() { System.out.print("1,"); } }
题目是問运行结果是什么?
我的理解如下:
从主方法入手,声明Teacher类的实例t1和t2,其中t1使用无参构造方法Teacher()进行初始化,而Teacher()中使用super(),即使用父类Person中无参构造方法Person(),在这个父类的构造方法中调用了func().所以,实例t1输出是:1, .
在实例t2中,使用有参构造方法Teacher(int a)进行初始化.所以,实例t2输出是:3
所以猜测的运行结果应该为1,3
实际运行结果为:2,2,3
我的疑问是:为什么会在使用了super()的情况下,调用的func()却是子类中的func()?而且是调用了两次?望各位大神解答.
问题补充:<div class="quote_title">Wind_ZhongGang 写道</div><div class="quote_div"><div class="quote_title">引用</div><div class="quote_div"> 我的疑问是:为什么会在使用了super()的情况下,调用的func()却是子类中的func()?而且是调用了两次?望各位大神解答.</div> <br /> <br />继承构造函数是从上往下构造,也就是说先构造父类再构造子类,这样就出现两次func调用。</div> <br /> <br />也就是説.在调用子类Teacher的构造方法生成实例t1和t2时,首先都要调用父类的构造方法,然后再使用子类自己的构造方法生成实例.所以,才会得到这样的运算结果.谢谢你!2011年10月27日 15:30
相关推荐
`super` 可用于访问父类中定义的属性、调用父类中定义的成员方法、在子类构造方法中调用父类的构造方法。`super` 的追溯不仅于直接父类,就是 father 的 father。。。。 多态是 Java 中的一种机制,可以实现方法的...
主要介绍了详解 Java继承关系下的构造方法调用的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....
Java继承时构造函数的调用, java面向对象特征: 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
JAVA语言中构造方法的继承与重载探讨
(2)学生类Student继承Person,增加了学号信息,有两个构造方法Student()和Student(姓名,性别,年龄,学号),调用父类Person的构造方法对父类部分进行构造,在Student()中,默认学号为空字符串,在Student...
内容为本人在学习java构造方法及继承部分时整理的笔记,内容为构造方法及继承基础知识
Java继承机制详解 Java继承是面向对象编程(OOP)的一种机制,允许一个类继承另一个类的成员变量和成员方法。通过继承,可以实现代码的重用和扩展。 在Java中,继承是通过使用关键字`extends`来实现的。例如,`...
主要介绍了java继承中的构造方法实例解析,针对继承中的构造方法的特点进行了实例分析,需要的朋友可以参考下
一个构造方法,无参数,在此构造方法中初始化dogName,dogAge 说明二:关于SmallDog 继承Dog,不添加任何属性和方法 最后,在测试类中的main方法中生成SmallDog类的对象,访问属性dogName和dogAge,并打印出他们的值...
自己设计的一个程序,展现有继承结构的子类对象的初始化过程(包含构造方法、初始化值、父类构造方法、父类的初始化值的环节)
实现接口和继承关系,每个类都有普通方法和构造方法
在继承关系中,构造方法 plays a crucial role,例如: ```java public class Animal { public Animal() { // 初始化 Animal 对象 } } public class Dog extends Animal { public Dog() { super(); // 调用...
3. 父类的含参数构造方法,子类可以通过在自己构造方法中使用super关键字来调用,但这个调用语句必须是子类构造方法的第一个可执行语句。 例如, class appl5_2 extends superclass,这里appl5_2类继承自superclass...
Java继承和多态PPT教案学习 本PPT教案主要讲解了Java中的继承和多态机制,包括继承、里式代换原则、多态和动态绑定、方法重载、重载构造函数和方法覆盖等概念。 继承是面向对象编程的基本机制之一,允许一个类继承...
下面将对Java继承的基本概念、语法格式、继承关系、方法重写、自动转型等进行详细的总结和分析。 一、继承的基本概念 继承是特殊的is-a关系,即子类继承父类,说明子类是一种特殊的父类,并且具有父类所不具有的...
java继承习题精选 包含可很多习题 同时也副有正确答案
本资源是关于JAVA基础的第四章继承与多态的练习题,涵盖了继承、多态、构造方法、方法覆盖、final类等知识点。本资源共有9道选择题,考察了程序员对JAVA语言的掌握程度。 在第1题中,我们可以看到,编译和运行以下...
子类可以继承父类中所有的属性和方法(除了构造方法) 一个父类可以有多个子类 一个子类只能有一个直接的父类-单继承(一个儿子只能有一个亲爹) java中支持多层继承(儿子-爹-爷爷。。。) ...