1.super和this的区别

super调用的是父类的属性或方法,this是调用当前类的属性或者方法。
    (1)super和this关于属性的调用



    (2)super和this关于方法的调用



(3)代表的对象不同:

        this:代表本身调用者这个对象

        super:代表父类对象的引用

(4)使用前提条件不同:

        this:在没有继承关系中也可以使用

        super:只能在继承条件下才可以使用

(5)构造方法:

        this:默认调用本类的构造器

        super:默认调用的是父类的构造器

2.构造器在继承中的调用顺序

3.有参无参在继承中的注意点

下图子类无参构造报错的原因是:当父类写了有参构造器而没有显示定义无参构造器,则父类的有参构造器会自动干掉其无参构造器,而子类无参构造器在使用前会先调用父类的无参构造器,父类的无参被有参干掉,导致子类也无法使用无参构造器。



    以上错误有两种解决方法:

    (1)父类中重写了有参构造器之后,显示定义无参构造器

    (2)在子类中调用父类的有参构造即可。如下图:

注:若在子类中不显示写super则默认调用的是无参构造,在父类重写有参构造器的前提下,想要不报错,父类中必须显示定义无参构造器

4.super在使用时的注意点

(1)当super调用父类的构造方法时必须在子类构造方法的第一行。
    (2)super只能出现在子类的方法或构造方法中。
    (3)super和this不能同时调用构造方法,因为这两都必须要在构造方法的第一行,因此不能同时在构造方法中使用。

点击查看代码
package com.Tang.oop.demo05;
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.test("唐");
System.out.println("=============");
student.test1(); } } package com.Tang.oop.demo05;
//子类继承父类之后,就会拥有父类的全部方法
public class Student extends Person{
public Student() {
super("Twq");//影藏了super代码:调用了父类的无参构造
System.out.println("Student无参构造执行了");
} private String name="Twq";
public void print(){
System.out.println("Student");
}
public void test1(){
print();//Student
this.print();//Student
super.print();//Person
}
public void test(String name){
System.out.println(name);//唐
System.out.println(this.name);//Twq
System.out.println(super.name);//jianduan
}
} package com.Tang.oop.demo05; public class Person {
public Person(){ }
public Person(String name) {
System.out.println("Person无参构造执行了");
} protected String name="jianduan";
public void print(){
System.out.println("Person");
}
}

super详解的更多相关文章

  1. Objective-C中 Self和 Super详解

    Objective-C中 Self和 Super详解 Objective-C 中Self 和 Super 详解本文要介绍的内容,在 Objective-C 中的类实现中经常看到这两个关键字 self  ...

  2. 第十一章、super()详解

    目录 第十一章.super()详解 一.引出super()来由 第十一章.super()详解 一.引出super()来由 原始用法: 在python类的方法中,要调用父类的某个方法,通常是类.方法() ...

  3. Python中super详解

    转至:https://mozillazg.com/2016/12/python-super-is-not-as-simple-as-you-thought.html 说到 super, 大家可能觉得很 ...

  4. Objective-C 的 self 和 super 详解 (用简单程序说明问题)

    在 Objective-C 中的类实现中经常看到这两个关键字 "self" 和 "super",以以前 oop 语言的经验,拿 c++ 为例,self 相当于 ...

  5. python super详解

    一.super() 的入门使用 - 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能, 这时,我们就需要调用父类的方法了,可通过使用 super 来实 ...

  6. 9.Super详解

    super注意点: surper()是调用父类的构造方法,而且必须在构造方法的第一个 super必须只能出现在子类的方法或者构造方法中! super()和this()不能同时调用构造方法! Vs th ...

  7. Java面向对象系列(8)- Super详解

    场景一 场景二 场景三 场景四 注意:调用父类的构造器,super()必须在子类构造器的第一行 场景五 场景六 super注意点 super调用父类得构造方法(即构造器),必须在构造方法得第一个 su ...

  8. Python中的Super详解

    这篇文章我们来介绍一下 super,我相信大部分的人使用 super 都是使用这种方式: # 就是我有一个 class 比如说是 Male,然后继承另外一个 class 比如是 Person,然后我在 ...

  9. java.super详解

    package Demo.oop.APP.Demo03; //demo3包的启动器 //此启动器用于继承 public class application { public static void m ...

随机推荐

  1. mybatis添加代码出现是第几条数据

  2. JDK自带线程池学习

    JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don't accept ...

  3. URL 是什么?

    URL 是什么? 本文写于 2020 年 5 月 16 日 URL 是什么?天天听到人家说到这个名词,那它到底是什么? URL 是统一资源定位符,Uniform Resource Locator. 俗 ...

  4. 1903021121-刘明伟 实验一 19信计JAVA—Markdown排版学习

    项目 内容 班级博客链接 19信计班(本) 作业要求链接 实验一 课程学习目标 学习使用Markdown排版 这个作业帮助我们实现了什么学习目标 学会使用Markdown排版 任务一:在博客园平台注册 ...

  5. Java获取特定区间随机数及产生不重复随机数

    问题 有这样一种需求,在这样一个数组中String[] arr = new String[]{"电商", "互联网", "小程序", &qu ...

  6. 好客租房56-props深入(3props校验-约束规则)

    1常见类型:Array,bool,func,number,object,string 2React:element 3必填项:isRequred 4特定结构的想:shape({}) //导入react ...

  7. unity---公共模块MonoController

    公共模块 如果有很多类使用Update()函数,会导致性能浪费 如果函数统一在一个Update()中执行 代码 上述,需要将脚本挂载到物体上, 故新建了一个管理类MonoMgr Mgr另外的作用 可以 ...

  8. 亿信BI——EXCEL组件使用流程

    功能模块: 用户点击"excel输入"模块进行excel文件导入操作,excel导入页面的顶部导航栏包括基本属性.文件设置.格式设置和字段列表四部分. 基础属性: 在基本属性模块部 ...

  9. Tomcat启动失败:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager

    项目开发中发现服务器上Tomcat启动失败 开始定位 第一步:打开tomcat日志catalina.log: 2017-07-25 17:02:43,799 [Catalina-startStop-1 ...

  10. 打通web的三维国产引擎!老子云AMRT,够牛!

    AMRT(Auto Mobile Reality Technology)指的是自动化移动现实技术,它是老子云3D模型自动轻量化引擎及轻量化模型格式.模型展示框架.API/SDK的统称.3D研发技术其中 ...