「JAVA子类函数」java 调用子类方法
本篇文章给大家谈谈JAVA子类函数,以及java 调用子类方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 子类的构造函数都必须要super();吗?
- 2、java中,子类调用父类函数构造函数中被重写的方法,输出语句为什么是默认值??
- 3、java创建父类对象可以用子类构造函数?why?
- 4、JAVA中 子类与父类构造方法的关系 个人理解
- 5、java子类的构造函数...
java 子类的构造函数都必须要super();吗?
不是必须的,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
java中,子类调用父类函数构造函数中被重写的方法,输出语句为什么是默认值??
1,Java的函数调用是虚拟调用,对象名.方法名,调用的都是其真实类型的函数,就是说,对象实际上是一个dog,那么调用的就是dog的重写方法。父类构造器之所以被调用,是因为子类的构造器会调用父类的构造器,整个过程实际上是dog的构造。
2,这个和初始化顺序有关,new对象时,会先初始化成员变量再调用构造器,所以初始化顺序是:父类的成员变量-父类构造器-子类成员变量-子类构造器
也就是说,父类构造器中调用getAge的时候,dog的成员变量还没有初始化
等到子类构造器中再调用一次的时候,已经完成初始化。
java创建父类对象可以用子类构造函数?why?
子类继承父类的数据和方法,子类对象当然也属于父类的类型,
不管父类或子类,静态成员总是在new创建对象之前执行
子类继承父类的构造方法的原则:一般JVM先调用子类的构造函数,
第一种情况:若子类构造函数开始没有显示调用父类构造函数,则自动调用父类那个无参构造函数。若已显示调用了,则调用显示调用的构造函数,而不再调用父类其它的构造函数。
第二种情况:在没有显示调用的情况下,若父类中无构造函数,则调用父类默认的构造函数。若父类中有构造函数而没有无参的构造函数,编译时会报错。
多态性,是编译引用变量时,无法确定其调用的是哪个类的方法,只能在程序运行期间,才能确定引用变量调用的具体类的方法,与创建父类和子类对象无关哟
JAVA中 子类与父类构造方法的关系 个人理解
编写JAVA作业时在继承的环节发现了一些错误,希望总结一些规律:(以下全部属于自己归纳,可能有问题)
一句话概括就是:子类一定会调用(不是继承)父类的构造方法!
即遵循一个原则:子类的构造一定是在父类已构造的基础上!
这句话要分为几种情况来理解(下面只讨论父类有构造函数):
子类构造函数自动调用super() (也可以手动加上)
但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中包含对super(args)的调用
一、父类含有无参构造函数
1、子类没有构造方法或者含有无参的构造方法:
这种情况,都会默认地调用super()
2、子类含有有参数构造方法:
同样会在首句默认调用super() //其实跟情况1类似
二、父类含有含参数的构造方法,不含无参数的构造方法:
子类没得选择:
子类必须申明一个构造方法(且含super的args),且方法里要首先调用super(args),否则报错。
三、父类含 含参数的构造方法和无参的构造方法:
此时子类可以选择性调用:
可以无构造方法:仍会默认调用super()
也可以有构造方法:其中会默认地调用super(),你也可以在开头加上这句,如果你不希望调用父类默认的无参方法,那么在 子类构造方法 中调用 父类含参构造方法。
上述看似情况复杂,其实基于其原则理解并不难。
综上:java为了保持 子类的构造基于父类的构造 这一原则,子类构造时必须通过某些方式首先调用父类的构造方法,否则会报错。
java子类的构造函数...
父类少了个无参构造方法。或者在子类的构造方法中改一下
fish(String n,int s){//子类fish的构造函数
super(n);
swimspeed=s;
}
关于JAVA子类函数和java 调用子类方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。