关闭

继承_super()

标签: java构造函数继承super
198人阅读 评论(0) 收藏 举报
分类:

创建子类实例时,会先执行父类构造函数定义的流程,再执行子类构造函数定义的流程。如下例:

    class Some{
        Some(){
            System.out.println("调用Some()");
        }
    }
    class Other extends Some{
        Other (){
            System.out.ptintln("调用Other()");
        }
    }

如果执行new Other(),是先执行Some()中的流程,再执行Other中的流程,也就是显示结果为:

    调用Some()
    调用Other()

继续看原因:
我们知道,父类中可以重载多个构造函数,如果子类构造函数中没有指定执行父类的哪一个构造函数,默认就会调用父类的无参构造函数。如果想要执行其他某一个构造函数,可以使用super()指定,例如:

class Some{
    Some(){
        System.out.println("调用Some()");
    }
    Some(int i){
        System.out.println("调用Some(int i)");
    }
}
class Other extends Some{
    Other (){
        super(10);    //指定某一构造方法,不一定打印输出。
        System.out.ptintln("调用Other()");
    }
}

在这个例子中,new Other()时,首先执行了super(10),表示调用构造函数时传入int数值10,也就是调用父类中Some(int i)版本的构造函数,而后再继续执行Other()中super(10)之后的流程。


重点来了,其实当你这么撰写时:

    class Some{
        Some(){
            System.out.println("调用Some()");
        }
    }
    class Other extends Some{
        Other (){
            System.out.ptintln("调用Other()");
        }
    }

前面谈过,如果子类的构造函数中没有指定调用父类的哪一个构造函数,那么默认调用父类的无参构造函数,也就相当于你这么写:

    class Some{
        Some(){
            System.out.println("调用Some()");
        }
    }
    class Other extends Some{
        Other (){
            super();    //super()默认省略。
            System.out.ptintln("调用Other()");
        }
    }


注意:
this()与super()只能择一调用,并且一定要在构造函数的第一行。

0
0
查看评论

java-继承super的使用

java-继承,super的使用
  • u012360598
  • u012360598
  • 2014-11-30 00:19
  • 873

Python 中的继承之Super用法

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件...
  • fenglovehappy
  • fenglovehappy
  • 2015-08-17 19:54
  • 4870

Java学习日记(四)继承、super、抽象类、接口

Java学习日记(四)继承、super、抽象类、接口
  • zgjswp
  • zgjswp
  • 2015-04-09 00:55
  • 683

python 普通继承方式和super继承方式

普通继承: #!/usr/bin/env python3       #-*- coding:utf-8 -*-       class FooParent(object):   de...
  • u010069176
  • u010069176
  • 2016-06-22 14:56
  • 1933

js多层继承 super方法

继承的时候我们需要调用父类的同名方法,这里面提供了一个简单的实现方式,供大家一起参考。 _gs_super 方法是扩展与最顶层父类的原型链上。 RootView.prototype._gs_super = function() { var caller = argument...
  • xiaotuwy
  • xiaotuwy
  • 2017-07-26 16:52
  • 543

继承中的初始化,super和this关键字

继承分为单继承和多继承,在java中,类只能单继承。单继承是指一个类只能有一个父类,多继承是指一个类可以有多个父类。多继承会产生调用的不确定性,然而多继承的好处是可以让子类具有更多的功能。 什么时候定义继承:当事物之间存在所属关系(is a)时,可以通过继承来实现这个关系。 子类可以继承父类中所有的...
  • sinat_36713319
  • sinat_36713319
  • 2016-11-16 20:13
  • 332

JavaScript通用继承方法和super

1、JavaScript通用继承的封装和super的使用      /** * JavaScript通用继承的封装 * @param {Object} Child 子对象 * @param {Object} Parent 子对象要继承的父对象 ...
  • zbw18297786698
  • zbw18297786698
  • 2017-04-01 20:46
  • 778

类继承中super的使用

使用super访问父类的域和方法 正是由于继承,使用this可以访问父类的域和方法,但有时为了明确地指明父类的域和方法,就要用关键字super。 例如:父类Person中一个字段age,在子类Student中使用age, this.age, super.age来访问age是完全一样的。当然,不能使...
  • qiyinmiss
  • qiyinmiss
  • 2015-08-19 00:00
  • 659

Java基础_super()用法和继承的关系

下面的文章是转载自http://greateryang.blog.163.com/blog/static/81953375201232661845898/ 看完这篇文章,你可以理顺super()的作用,和使用该注意的情况; class A{int x;public...
  • s389747131
  • s389747131
  • 2014-12-19 13:30
  • 829

Scala继承

类型检查和转换 要测试某个对象是否属于某个给定的类,可以使用isInstanceOf方法,如果测试成功,你可以用asInstanceOf方法将引用转换为子类的引用 if(p.isInstanceOf[Employee]){ val s = p.asInstanceOf[E...
  • shijiebei2009
  • shijiebei2009
  • 2014-08-20 20:45
  • 3100
    个人资料
    • 访问:14413次
    • 积分:331
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:11篇
    • 译文:0篇
    • 评论:0条