Ⅰ java中子类一定要调用父类的构造函数吗
不需要,子类可以有自己的构造函数,也可以调用父类的。不过实例化子类的时候会先调用父类的构造函数。
Ⅱ java中super调用父类构造函数问题
我来解释:
如果你想用super继承父类构造的方法
但是没有放在第一行的话
那么在super之前的语句
肯定是为了满足你自己想要完成某些行为的语句
但是你又用了super继承父类的构造方法
那么以前所做的修改就都回到以前了
也就是说又成了父类的构造方法了
比如
class Father
{
public Father()
{String name=null;
int age=0;}
}
class Son extends Father
{
public Son()
{String name="学生";
super();}
}
//这样子的话就会把Son里面的name又变成了null
没有达到你想要的效果
不知道明白没有
累死我了
Ⅲ java,中的子类继承父类,子类如何调用父类的构造函数举一个简单的例子加注释说明
子类无条件调用父类的无参构造函数,实例:
父类:
package com.test;
public class TestFatherClass {
private String name="abc";
TestFatherClass(){
System.out.println("1、这是父类的无参构造函数");
}
TestFatherClass(String a){
System.out.println("2、这是父类的有参构造函数");
}
}
子类:
package com.test;
public class TestChildClass extends TestFatherClass{
TestChildClass(){
System.out.println("3、这是子类的无参构造函数");
}
TestChildClass(String str){
System.out.println("4、这是子类的有参构造函数");
}
public static void main(String[] args) {
System.out.println("实例化对象时:(无参)");
TestChildClass test = new TestChildClass();
System.out.println("实例化对象时:(有参)");
TestChildClass test2 = new TestChildClass("adad");
}
}
输出结果:
Ⅳ 在java中用来调用父类构造方法的关键字是
java中的关键字super有两种用法。
一、调用父类的构造方法,如:
class A
{
A(String s)
{
System.out.println(s);
}
}
class B extends A
{
B()
{
super("父类");
System.out.println("子类");
}
}
完整例子如下图:
Ⅳ java调用父类的构造方法,并传递参数怎样实现
class
Dad
{
String
name;
int
age;
public
Dad(){}
public
Dad(String
name,int
age)
{
this.name
=name;
this.age
=age;
}
}
class
kid
extends
Dad
{
public
kid()
{
super();
//父类构造器的调用,必须是子类构造器中的第一个语句
System.out.println("优先调用了无参构造器
");
}
public
kid(String
name,int
age)
//含参构造器中的参数列表,即包含了子类的成员变量,也包含了继承的父类的成员变量
{
super(name,age);
//●●●父类构造器的调用,必须是子类构造器中的第一个语句
System.out.println("优先调用了含参构造器:"+this.name+"已经"+this.age);
}
}
public
class
maintest
{
public
static
void
main(String[]
args)
{
kid
kd1=new
kid();
kid
kd2=new
kid("帅哥",19);
}
}
Ⅵ Java中构造函数调用父类构造函数可以同时调用其他构造函数吗麻烦举例说明。
不可以,调用父类的构造方法必须在子类构造方法的第一句,隐含意思就是只能调用一个父类构造方法,否则提示错误。
Ⅶ 在java语言里如何在子类中调用父类的有参构造函数
如果你是想在子类的构造函数中调用父类构造函数,则需要在子类的构造函数的函数体第一行(注释语句除外)使用:super(参数列表)的方式调用,该参数列表与父类有参构造函数声明的参数列表一致,如果你不是在子类构造函数中调用,则无法直接调用父类构造函数,这时创建一个父类对象(通过你想调用的有参父类构造函数创建),就间接调用了该构造函数。
Ⅷ “java”中父类构造方法的调用怎么操作
Father a = new Father(baba); 这跟直接调用另一个类并且实例化对象并没多大区别把,不用继承也能做到。调用父类的构造函数用super();关键字x0dx0ax0dx0apublic class Father {x0dx0apublic Father()x0dx0a//{x0dx0a//System.out.println("父类无参构造方法");x0dx0a//} //不在父类中显式声明x0dx0apublic Father(String name)x0dx0a{x0dx0aSystem.out.println("父类有参构造方法");x0dx0a}x0dx0a}//父类x0dx0ax0dx0apublic class son extends Father {x0dx0apublic son()x0dx0ax0dx0a{x0dx0asuper();x0dx0ax0dx0aSystem.out.println("子类无参构造方法");x0dx0a}//子类super();调用父类无参构造方法x0dx0apublic son(String name)x0dx0a{x0dx0asuper(name);x0dx0aSystem.out.println("子类有参构造方法");x0dx0ax0dx0a}x0dx0a}//子类x0dx0a系统在Father类中默认一个无参构造函数,若不在父类中显式的声明,子类super();调用时提示父类的构造方法是未定义的。必须要显式的声明。不会调用默认的无参构造函数。用个编译器具体编译一下,看看到底报的什么错,对症下药。
Ⅸ java中,子类调用父类函数构造函数中被重写的方法,输出语句为什么是默认值
1,Java的函数调用是虚拟调用,对象名.方法名,调用的都是其真实类型的函数,就是说,对象实际上是一个dog,那么调用的就是dog的重写方法。父类构造器之所以被调用,是因为子类的构造器会调用父类的构造器,整个过程实际上是dog的构造。
2,这个和初始化顺序有关,new对象时,会先初始化成员变量再调用构造器,所以初始化顺序是:父类的成员变量->父类构造器->子类成员变量->子类构造器
也就是说,父类构造器中调用getAge的时候,dog的成员变量还没有初始化
等到子类构造器中再调用一次的时候,已经完成初始化。