super

super是啥? 我第一次看见这个词首先想到的是superman~~ 超人. superstar. 超级巨星. 翻译过来就是”超”. 所谓超人. 就是比人牛B那么一点点的人. 表示高一级.

那么到了程序里. 这个鬼东西是干嘛的? 原来我们讲过一个词叫this. this的作用是区分成员变量和局部变量. 对吧.

this.name = name

Ok, super的作用和this差不多. 它是区分当前类和父类中重名的问题.

调用父类中重名的内容

写个Programmer

package com.lewen.day18;public class Programmer {public String name = "程序员";}

写个 Front,此时在Front里就会有两个name. 默认用的是孙悟空的, 但是我想用hero的, 怎么办. 用super

package com.lewen.day18;public class Front extends Programmer {public String name = "前端";public void skill() {System.out.println(this.name);System.out.println(super.name);}}

测试

package com.lewen.day18;public class Test {public static void main(String[] args) {Front fr = new Front();fr.skill();}
}

OK. 我们对super有了一个初步的认识. 说白了就是找父类中的东西.

调用父类的构造方法

接下来. 我们给父类设置一个构造方法.

package com.lewen.day18;public class Programmer {public String name = "程序员";public Programmer(String name) {this.name = name;}
}

Front里报错了….

为什么呢? 这就涉及到一个创建对象的过程

在执行new的时候. 整个java就开始动起来, 先加载父类. 没有父类就没有子类. 对吧, 所以先加载父类, 然后加载子类. 然后. 会先执行父类的构造方法, 创建一个父类的对象 然后才是子类的构造方法. 这样一个对象才被创建出来.

package com.lewen.day18;public class Programmer {public String name = "程序员";public Programmer(){System.out.println("父类的构造方法");}}package com.lewen.day18;public class Front extends Programmer {public String name = "前端";public Front() {System.out.println("子类的构造方法");}}package com.lewen.day18;public class Test {public static void main(String[] args) {Front fr = new Front();}
}

打印结果

父类的构造

子类的构造

    那为什么前面我们不写父类的构造的时候, 程序就不报错呢? 我们说过, java会自动送给每一个类一个构造方法, 注意, 这个构造方法是空的. 没有参数的. 所以, 前面的一切调用都是自动的.

但是, 此时我们给出了父类的构造方法. 那在创建父类对象的时候就必须要调用父类的构造方法. 但是父类中没有无参数的构造方法. 这样就必须由程序员手动去调用父类中的构造方法. 记住,. 这个是必须的.

package com.lewen.day18;public class Programmer {public String name = "程序员";public Programmer(String name) {this.name = name;}}package com.lewen.day18;public class Front extends Programmer {public String name = "前端";public void skill() {System.out.println(this.name);System.out.println(super.name);}public Front() {super("调用父类程序员");   // 必须手动调用父类中的构造方法, super()必须写在第一行
//        System.out.println("子类的构造方法");}}package com.lewen.day18;public class Test {public static void main(String[] args) {Front fr = new Front();fr.skill();}
}
输出:
前端
调用父类程序员

切记, 父类如果没有无参数的构造. 子类必须手动使用super调用父类的构造方法. 来完成父类对象的创建.

super:

调用父类中重名的内容

调用父类的构造方法

java 中的 super相关推荐

  1. java super父类的父类_合理使用父类的财富——Java中的super

    Java中的继承让类之间有了父子关系.子类可以继承父类开放给自己的变量.方法等等. 在子类可以直接使用父类的这些变量或者方法等等. 就像下面图1的代码这样. 图1 这段代码中在子类对象可以直接使用父类 ...

  2. [Java]中[this][super]用法总结

    this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于是指向当前对象本 ...

  3. Java中<? super T>和List<? extends T>的区别

    Java中<? super T>和List<? extends T>的区别 <? extends T> 下面通配符声明List<? extends Numbe ...

  4. java中this,super,extends,implements相关继承概念讲解

    在java中有关==继承==这个词有许多关键字:super,this,extends,implements      对于初学者来说着实比较晕,网上说的也是云里雾里.现在个人算是有些眉目了,来一次总结 ...

  5. java中的super和this_在Java中super和this的区别

    摘要:在Java中我们会时常用到super及this的用法,现在我主要来区分一下super.和this.及superL()及this()之间的区别,来对它们的认识和了解: 1.this的用法在Java ...

  6. java中的super关键字

    原文 一.定义 它是一个指代变量,用于在子类中指代父类对象. 二.应用 2.1 应用范围 只能用于子类的构造函数和实例方法中,不能用于子类的类(静态)方法中.原因是super指代的是一个父类的对象,它 ...

  7. java中的super限定

    super的用法: (1)如果需要在子类中调用父类中被覆盖的实例方法,可以用super限定来调用父类中被覆盖的方法.当然,也可以调用从父类继承的实例变量. public void callOverri ...

  8. java中的super()是什么

    要说super就先要说this. "this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个 ...

  9. java中的super()是什么?

    个人理解: 一个父类,一个子类,子类构造函数时用super(). 比如说学生类与人类,学生有姓名,性别,人类也有,学生可以调用人类的构造函数初始化姓名,性别,学生类还有自己的属性,学号,就不必再构造姓 ...

最新文章

  1. ExecuteScalar()如何返回整数
  2. 小猿圈web前端之移动端Vue+Vant实现上传压缩旋转图片功能
  3. Linux磁盘分区(二):删除
  4. java trie实现
  5. 'mysql_attr_use_buffered_query'_php中mysql操作的buffer知识
  6. 壁式框架内力计算_4种类型剪力墙的计算要点
  7. 使用frp实现将内网映射到公网 无需花生壳
  8. 内购订单进行二次处理_「物流图表」复杂业务场景下的订单管理系统搭建
  9. 音频、视频等文件格式(.ts、.meta)及其认识
  10. android学习日记20--连接组件之Intent和IntentFilter
  11. 快速调用企业工商数据
  12. 10-16 C1-2新增订单统计信息 (20 分)
  13. 模拟一个简单的购房商贷月供计算器
  14. POJ1328(贪心)题解
  15. Linux学习笔记(1)--Linux的发展史
  16. 上|中国股市九大伪元宇宙概念股
  17. phpstudy mysql恢复数据_MySQL_详解MySQL误操作后怎样进行数据恢复,一、开启binlog。 首先查看binlo - phpStudy...
  18. 微信硬件平台蓝牙打印机
  19. 各大厂800道Java后端经典面试题合集
  20. quartz集群模式下qrtz_triggers表trigger_state变ERROR分析

热门文章

  1. java clone方法_java安全编码指南之:方法编写指南
  2. html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
  3. mongodb 查询效率_2020年9个好用的MongoDB 图形化界面工具
  4. linux ldap客户端工具,OpenLDAP 客户端安装部署
  5. web页面刷不出来 白色_今日头条连接超时刷不出来解决方案
  6. 漫画 | 如何凭实力炒老板鱿鱼,并喜提N+1~
  7. 假设检验在数据分析中的应用
  8. 这也太狠了吧!500套Java实用代码,不论工作学习都能用到!
  9. LaTeX 总决式 | 重剑无锋,大巧不工
  10. foreach判断最后一个_PHP 内核:foreach 是如何工作的(二)