super()调用父类构造方法
super()表示调用父类中的构造方法
1、子类继承父类,子类的构造方法的第一行,系统会默认编写super(),在调用子类的构造方法时,先调用父类的无参数构造方法
2、如果父类中只有有参数构造方法,那么子类继承父类时会报错,因为子类的构造方法在默认调用父类无参数构造方法super()不存在。
3.如果子类的第一行编写了this()、this(实参),因为this()也会占用第一行,所以此时就会将super()挤掉,就不会调用父类构造方法。
实例1.子类的构造方法会默认在第一行先调用父类无参数构造方法super()
//父类
public class Father
{ int id; public Father()
{
System.out.println("调用父类中的构造方法");
}
} //子类
public class Son extends Father
{
public Son()
{
System.out.println("调用子类构造方法");
} } //测试类
public class Test
{
public static void main(String[] args)
{
Son s = new Son();
} } //结果是:先调用父类无参数构造方法,在调用子类构造方法
实例2:父类中没有参数构造方法
//父类中编写有参数构造方法,覆盖无参数构造方法
public class Father
{ int id;
//定义有参数构造方法
public Father(int id)
{
System.out.println("调用父类中的构造方法");
}
} //子类继承父类
//因为父类中没有无参数构造方法,所以会子类继承父类时会报错
我们可以通过在子类中调用父类有参数构造方法来避免这种错误,
//定义父类,并且编写有参数构造方法覆盖无参数构造方法
public class Father
{ int id; //编写有参数构造方法覆盖无参数构造方法
public Father(int id)
{
System.out.println("调用父类中的构造方法");
}
} //定义子类
public class Son extends Father
{
public Son()
{ //在构造方法中调用父类有参数构造方法
super(10);
System.out.println("调用子类构造方法");
} } //编写test类 public class Test
{
public static void main(String[] args)
{
Son s = new Son();
} } 测试结果:
也可以在构造方法中调用本类中其他构造方法,来挤掉super()调用父类中无参数构造方法
//父类
public class Father
{ int id; //
public Father(int id)
{
System.out.println("调用父类中的构造方法");
}
} //子类
public class Son extends Father
{
//无参数构造方法
public Son()
{
//手动编写调用父类有参数构造方法
super(10);
System.out.println("调用子类构造方法");
} //有参数构造方法
public Son(int i)
{
//调用本类其他构造方法,挤掉super()
this();
System.out.println();
} }
super()调用父类构造方法的更多相关文章
- 关于继承中的super()调用父类构造方法
super super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. 每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象.所以说,为了那个内置的父类 ...
- 使用super调用父类的构造方法
package com.bjpowernode.t02inheritance.c09; /* * 使用super调用父类的构造方法 */public class TestSuper02 { publi ...
- super关键字和调用父类构造方法
表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...
- java super关键字和调用父类构造方法
表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...
- [转]Java中子类调用父类构造方法的问题分析
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的时候,必须首先要new一个 ...
- 第7.22节 Python中使用super调用父类的方法
第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...
- python使用super()调用父类的方法
如果要在子类中引用父类的方法,但是又需要添加一些子类所特有的内容,可通过类名.方法()和super()来调用父类的方法,再个性化子类的对应函数. 直接使用类名.方法()来调用时,还是需要传入self为 ...
- [py]super调用父类的方法---面向对象
super()用于调用父类方法 http://www.runoob.com/python/python-func-super.html super() 函数是用于调用父类(超类)的一个方法. clas ...
- Java -- 子类使用super调用父类的方法A,A 调用了方法B,子类也override方法B,那么super.A()最终调用到了子类的B方法
public class SuperClass{ public void printA(){ System.out.print("SuperClass-printA"); prin ...
随机推荐
- python 建立多维列表
今天用到在网上没有找到合适的思路,于是自己动手写了一个,作为记录. dpa = [] dpb = [] dpc = [] for i in range(21): dpa.append(0) for i ...
- k8s外部访问内部的service
如果不指定Service的spec.type的值,创建的Service的类型默认为ClusterIP类型.这种类型的Service只会得到虚拟的IP和端口,只能在Kubernetes集群内部被访问. ...
- Java好的的工具类:MD5
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 ...
- 日常杂记——C#验证码
随机生成验证码,不能以图片的形式存在,所以需要将验证码图片以MemoryStream形式存储在内存的流当中,但是在使用时发现使用PictureBox控件无法显示内存流,所以需要先将流转化为图片,才可以 ...
- scala 读取保存文件 去除字符特殊
/** * 读取文件 * @param filename * @return */ def readFormFile(filename: String) = { var ooop = "&q ...
- v-for key
key 当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略.如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素 ...
- 用python发送短消息(基于阿里云平台)
新版短信接口在线测试页面:https://api.aliyun.com/new#/?product=Dysmsapi&api=SendSms¶ms={}&tab=DEM ...
- anujs1.4.0发布
经过三个月的埋头苦干,终于完成Fiber版的anujs. 主要特性有: 测试全部改成jest, 迁移官方测试用例.有许多迷你React吹得怎么天花乱坠,但是生命周期钩子的执行顺序无法与官方保持一致,那 ...
- vue 动态添加 <style> 样式 vue动态添加 绑定自定义字体样式
created(){ //动态添加自定义字体样式 let style = document.createElement('style'); style.type = "text/css&qu ...
- PHP5.5.38版本Zend Guard loader for 5.5安装(详细)
第一次在博客园写东西记录自己,不,可以说第一次在网上写东西记录自己,我只是个菜鸟,具体的不太懂, 但是作为一个菜鸟我肯定把我遇到的问题给详细的表述出来,大神勿喷.在安装Zend Guard loade ...


