• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > java Super 用法详解及实例代码

java Super 用法详解及实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java super用法,java中super的用法,super在java中的用法,java里super的用法,java super等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

java  Super 用法详解

 1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量;

2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间,在默认的构造函数中先初始化变量,调用另一个的时候覆写已经初始化的变量的值;

3)整个调用的过程和递归调用函数有点类似,不断充气球,直到整个气球膨胀起来,不断的深层递进,遇到停止标记,逐层的跳出来。

     写了段代码,解释我上面的叙述:

class JavanTiger {
  int age;   // 年龄
  int hight;  // 身体高度

  public JavanTiger() {
    print();
    this.age=2;  //这里初始化 age 的值 ,但递归返回的时候,这个值会被覆写
  }
  
  public JavanTiger(int age) {
    this();   // 调用自己的第一个构造函数,下面的两个语句数不执行的
    this.age = age;
    print();
  }

  public JavanTiger(int age, int hight) {
    this(age);  // 调用自己第二个构造函数 ,下面的两个语句数不执行的
    this.hight = hight;
    print();
  }

  public void print() { //打印函数
    System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
  }
  public static void main(String[] args) {
    new JavanTiger(3,3);
  }
}
//output
//I'am a 0岁 0尺高 tiger!
//I'am a 3岁 0尺高 tiger!
//I'am a 3岁 3尺高 tiger!
</div>

      个人理解就是这样了,可能里面还有问题,比如构造函数递归调用和程序函数递归调用的机制是否似乎相同的?构造函数同对象一起产生,也就是同时会分配内存空间出来,那门这样的递归调用会不会打乱分配内存的顺序?希望看到的大牛们拍板,给个最好的解释。

     今天要总结的是 super 这个关键字的使用,super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数,贴段代码先

class Tiger {
  int age; // 年龄
  int hight; // 身体高度

  public Tiger() {
    print();
  }

  public void print() {
    System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
  }
}
public class JavanTiger extends Tiger {  
  public JavanTiger() {
    super();  // 调用父类无参数的构造函数
  }
  public static void main(String[] args) {
    new JavanTiger();
  }
}
</div>

    其实在类JavanTiger 中的构造函数中的 super()可以不写,JAVA会默认调用父类的无参数的构造函数,但如果父类没有定义无参数的构造函数,没有语法错误,程序会自动退出,没有任何打印语句,这时候你需要手动调用其他父类的构造函数,贴段代码:

class Tiger {
  int age; // 年龄
  int hight; // 身体高度

  public Tiger(int age) {
  this.age = age;
  print();
  }
  public void print() {
    System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
  }
}
public class JavanTiger extends Tiger {  
  public JavanTiger() {
    super(1);  // 调用父类有参数的构造函数
  }
  public static void main(String[] args) {
    new JavanTiger();
  }
}
</div>

      这段代码中的 super(1)必须要写进去,否则编译器会报错。所以我简单的总结了一下,“this()是调用自己其他的构造函数,super()是调用自己继承的父类的构造函数“,如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。

     那门这两个关键字能不能同时出现在子类的一个构造函数当中纳?答案肯定是不能。先说下自己的理解:

1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数);

2)JAVA 中规定使用 this 和 super 时必须放在构造函数第一行,只有一个第一行;

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java中的super关键字_动力节点Java学院整理
  • java Super 用法详解及实例代码
  • java 关键字super详解及用法
  • Java中的super关键字_动力节点Java学院整理
  • java 关键字super详解及用法

相关文章

  • 2017-05-28Spring Boot Redis 集成配置详解
  • 2017-05-28springboot集成spring cache缓存示例代码
  • 2017-05-28java 实现文件夹的拷贝实例代码
  • 2017-05-28ssm框架上传图片保存到本地和数据库示例
  • 2017-05-28Java中四种遍历List的方法总结(推荐)
  • 2017-05-28Java多线程中的单例模式两种实现方式
  • 2017-05-28详解JDBC使用
  • 2017-05-28详解Java中的增强 for 循环 foreach
  • 2017-05-28Linux下用java -jar运行可执行jar包的方法教程
  • 2017-05-28Java微信二次开发(三) Java微信各类型消息封装

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java中的对象流总结(必看篇)
    • MyBatis快速入门
    • Spring 使用注解方式进行事务管理配置方式
    • JVM(Java虚拟机)简介(动力节点Java学院整理)
    • Java中初始化块详解及实例代码
    • Java通过正则表达式获取字符串中数字的方法示例
    • Spring Boot 使用Druid详解
    • Spring Boot启动过程完全解析(二)
    • SpringBoot初始教程之统一异常处理详解
    • Java线程同步、同步方法实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有