今天探索吧就给我们广大朋友来聊聊super方法,以下关于观点希望能帮助到您找到想要的答案。
java关于继承,构造方法的调用 我的一个继承老是说找不到符号,为什么 问题二 super的用法
最佳答案你的父类写了有参构造方法后,你没写无参构造方法,而调用子类构造方法时要调用父类的构造方法,默认的是调用无参构造方法,而你父类中没有无参构造方法,所以报错;
当你在父类写上无参构造方法后,就不会报错了 ;你在子类构造方法里写上父类有的有参构造方法,父类里有 也不会报错,就通过编译了
调用父类的构造方法 只能在子类的构造方法里 ,而且是在子类构造方法的第一行;在其他方法里就会报错了
super 在构造方法里能调用父类的构造方法,只能写在第一行
用法:super(); super(参数列表)
在其他(不包括主方法)里可以调用父类的方法
用法:super.父类的方法名(有参数的参数写在这括号里); super.属性名;
方法名和属性名都是非私有的才能被调用
JAVA中子类用SUPER调用父类的构造方法,一定要把SUPER放在第一行吗?
最佳答案你不写默认是在第一行系统有会加上的。 创建子类对象时,调用子类构造方法之前会先调用父类构造方法,如果有父类一直追溯到Object类,它是祖宗类,哈哈
如果你不写第一行,默认你是可以写一个继承过来的属性赋值的,尽管你认为你可以不这样写,但是系统为了以防万一有人这么干,所以super要在第一行,如果不在第一行,你写了个继承来的属性,那这时候没调用super,还没那个属性呢。 因为都是实例属性,必须先有实例,才能使用。
关于java的问题,为什么“Super必须是子类的第一条语句”?
最佳答案super具体的说就是父类的对象,既然是父类的对象一般情况下自然可以想对象一样使用,
比如直接调用匪类的一些方法变量等(如:super.math();再如super.variable;)
而放在构造方法中的第一句调用父类的构造方法:如下:
chass
Father
{
public
Father()
{
}
}
chass
Son
extends
Father
{
public
Son()
{
super();//这里就是调用了父类的无参数的构造方法。它必须放在子类的构造方法的有效代码的
//第一句(重点1,放在子类的构造方法中。重点2,必须是有效代码的第一句)
System.Out.Println("第一句是掉用父类的方法,下面的就是子类的初始化了");
}
}
补充:如果要调用父类的含参数的构造方法,则子类的super();括号中就要传入相应的参数
虽然我们无法避免生活中的问题和困难,但是我们可以用乐观的心态去面对这些难题,积极寻找这些问题的解决措施。探索吧希望super方法必须在子类构造方法中的第一行,能给你带来一些启示。