精华内容
下载资源
问答
  • 1、super()在构造方法中使用可以使该类的构造方法调用其父类的构造方法: 2、super中可以添加参数,可以根据super中的类型调用父类中与该参数类型相同的构造方法: 3、易出错的地方就是:在子类中调用了...

         一、super()在构造方法中的作用

             1、 super()在构造方法中使用可以使该类的构造方法调用其父类的构造方法:

             2、super中可以添加参数,可以根据super中的类型调用父类中与该参数类型相同的构造方法:

             3、易出错的地方就是:在子类中调用了父类中不存在的构造方法:

                  此时因为父类中的无参构造方法已经不存在了,此时使用super()会出现错误,因为父类中已经不存在无参构造方法

         二、super()在构造方法中的使用技巧

             1、构造方法中的默认属性

                      在构造方法中默认含有一个super(),所以可以不写;

                    如图所示,即使子类中为并未声明super,但父类中的构造方法依旧被调用了;

             2、super首行有效代码性

                      super只能出现在有效代码的首行,不可以写在代码后面,这一点与this在同类中引用相同;所以,当一个构造方法中引用了另一个构造方法时原来的构造方法中默认的super是不存在的;通过this调用的构造方法方法中也含有一个super,此时由于最后被调用的构造方法中必含有super,于是父类的构造方法也被调用了,如图:

        三、通过super()总结父类对子类构造方法的影响

            当子类创建对象时,父类的构造方法一定被使用

                无论是子类中的构造方法是否含有this,在创建对象时其子类中最后一个被执行的构造方法一定含有super,这使得父类中的构造方法也被调用;

    展开全文
  • 构造方法 构造器也叫构造方法,用于对象的初始化,通过new关键字调用 ...构造方法第一句是super,可以调用同类的另一个构造函数或者父类的构造函数,编译器会自动加 ** 类内方法: ** 实例方法:普通方法,类内部...

    构造方法

    构造器也叫构造方法,用于对象的初始化,通过new关键字调用
    构造方法名必须与类名相同,没有返回值,它返回的对象的地址并且赋值给引用变量
    构造方法不能被继承不能重写但是可以重载
    每个类至少有一个构造方法,没有的话系统也会会提供一个默认的无参构造.
    构造方法第一句是super,可以调用同类的另一个构造函数或者父类的构造函数,编译器会自动加
    **

    类内方法:

    **

    1. 实例方法:普通方法,类内部可以相互调用
    2. 静态方法:静态方法不能使用非静态方法(实例方法)与非静态变量,静态方法好处不用new对象
    3. 静态代码块:随着类的加载而执行,优先于主函数执行
      (静态调用前面类名,非静态调用this)
      执行顺序
      父类静态->子类静态->父类非静态->父类构造方法->子类非静态->子类构造方法
    展开全文
  • 学习总结@20190727@wuxm 1. java学习笔记 1.1 super和this关键字 super关键字: 子类继承父类,如果子类重写了父类的方法后还想...使用super关键字访问父类被重写隐藏的非private方法调用格式为:super.父类非priva...

    1. java学习笔记

    1.1 super和this关键字

    super关键字:

    子类继承父类,如果子类重写了父类的方法后还想继续访问父类的非private变量或方法,就可以通过super关键字来实现对其父类成员的访问,super指向当前对象的父类的引用。

    • 使用super关键字访问父类被重写隐藏的非private方法,调用格式为:super.父类非private方法;

    • 使用构造方法创建子类对象的时候,在子类的构造方法的方法体第一行有一条隐藏的super();意思是创建子类对象的时候会先调用其父类的无参构造方法(前提是父类中没有有参的构造方法,或者含有有参构造方法和无参构造方),如果父类中含有有参构造方法却没有无参构造方法的话,则子类中需要显示地用super(参数类型参数)来指明调用父类的哪个构造方法,其中super()中的参列表数就是需要调用的父类构造方法的参数列表。

    this关键字:

    同super类似,只不过,this所指向的是当前对象的引用。

    • 使用this在方法内部可以区别类中相同名称的实例变量和局部变量。当类中一个方法的参数(局部变量)同类中的实例变量的数据类型和名称都相同的时候,那么实例变量就会被隐藏起来,如果在该方法内部还想访问被隐藏起来的实例变量的时候就可以使用this.实例变量名,此时访问的变量就是类的实例变量而不是与其同名的局部变量了;

    • 在构造方法中调用本类的其他构造方法时,就要在构造方法的第一行使用this(参数类型参数)来指明调用本类的那个构造方法。

    1.2. final和static关键字

    fianl关键字:

    final意为最终的,不可改变的。final可以用来修饰类、属性、变量和方法。

    • final修饰类中的属性或变量(基本类型和引用类型):被final关键字修饰的属性或变量一旦被赋予了初值,后期就不能改变了。这里需要注意的是:被fianl修饰的的基本数据类型一旦被赋初值后就不能再改变了,而被final修饰的引用变量被赋予初值后,该变量的引用就不能再被修改了,但该引用所指向的对象的属性内容是可以改变的。

    • final修饰类中的方法 :被final修饰的方法不能改变,也就是说不能该方法不能被重写。

    • final修饰类:被final修饰的类不能被继承,因而final关键字不能与abstract关键字一起使用。

    static关键字:

    static意为静态的,被static修饰的变量称为静态变量,被static修饰的方法称为静态方法。

    • 类中的static变量和static方法不是属于该类的对象的,而是属于这个类的。也就是说当我们创建一个类的两个不同对象的时候,这两个对象都会含有他们自己的属性内容和方法,一个对象改变其属性内容对了另一个对象的属性内容不会有影响,因而说它们自己饿属性和方法是属于对象的;而static变量是属于类的,也就是说这个类的所有对象共享一个变量,一个对象改变了这个static变量的内容后,其他对象访问static变量时访问到的是被前一个对象修改后的内容,所以说被static修饰的变量或方法是对象的共享变量或共享方法。

    • static变量是属于类的,当初被加载的时候就已经被初始化了,因而除了可以用对象调用外还可以用类名调用,建议使用类名调用,因为static属性或方法的初始化在对象的创建之前。

    • static方法只能访问static变量和访问,不能访问非static的变量和方法,但非static的变量和方法可以访问static的变量和方法。

    1.3 构造方法

    java文件被编译成class文件时,在子类的所有构造函数中的第一行(第一个语句)会默认自动添加 super() 语句,在执行子类的构造函数前,总是会先执行父类中的构造函数。

    • 构造方法不能被继承,如果子类想调用父类的有参构造方法,就需要在其构造方法的第一行显示地使用super()来指明调用父类的哪个构造方法。

    • 执行父类构造函数的语句只能放在函数内语句的首句,不然会报错。

    • 如果没有给类写构造方法,那么系统会给该类隐式地加一个默认的无参构造方法。如果给类写了构造方法,系统就不会再给该类提供一个默认的无参构造方法。

    1.4 java标识接口

    内部没有声明任何方法或变量的接口称为标识接口,也就是说实现该接口的类不需要重写接口中的东西。标识接口仅仅起一个标识作用,标识其实现类拥有某种特性。
    例如Serializable接口,它就是一个标志接口,标识其实现类的对象是否具有序列化和反序列化的功能。

    展开全文
  • 父类拥有无参构造方法(无论是隐式的还是显示的)且子类的构造方法中又没有明确指定调用父类哪一个构造方法,则子类中没有调用该子类其他构造方法的构造方法使用 super(); 隐式调用父类的无参构造方法。 虽然在...

    父类构造方法对子类构造方法的影响

    父类拥有无参构造方法

    父类拥有无参构造方法(无论是隐式的还是显示的)且子类的构造方法中又没有明确指定调用父类哪一个构造方法,则子类中没有调用该子类其他构造方法的构造方法使用 super(); 隐式调用父类的无参构造方法。

    虽然在这里我们将 super(); 注释掉了,但依旧默认调用了父类无参构造方法,这种调用又称为隐式调用。

    父类没有无参构造方法

    如果父类没有无参构造方法,即只有有参构造方法,那么子类构造方法必须直接或间接指定调用父类哪个构造方法,且要放在有效代码的第一行;

    如上图;如果super(); 里面没有参数或者没有super(); 则程序会默认调用父类无参构造方法,又因为父类没有无参构造方法(有参构造方法会把默认的无参构造方法覆盖掉,即已有有参构造方法,就没有了无参构造方法,当然,如有需要可手动定义一个无参构造方法);故程序会报错

    注意

    1、super([参数]); 调父类构造方法需要放在构造方法内有效代码的第一行,否则会报错;

    2、this([参数]); 调用同类的构造方法也需要放在构造方法内有效代码的第一行,否则会报错;

    3、因此 super([参数]); 和 this([参数]); 不会也不能同时出现在同一个构造方法内;

    4、子类构造方法必定会调用父类构造方法。

    展开全文
  • JAVA面向对象之构造方法

    千次阅读 2015-12-22 21:39:51
    语句来创建一个对象,new可以理解成创建一个对象的关键字,通过new关键字为对象分配内存,初始化实例变量,并调用构造方法。Box()在形式上和调用方法的形式相同,这个Box()就是一个特殊的方法叫构造方法。但是我们在...
  • 构造方法与普通方法不同之处在于:它在类生成,所以专用于在构造对象时,初始化对象成员的,其名称与所属类名相同 构造方法的实现 构造方法在类实现,所以先有一个类 如 class 类名 { 访问权限 类名(参数1,...
  • 静态方法同类调用:静态方法直接调用静态方法,静态方法需要new才能调用非静态方法 ...JAVA中构造方法、实例方法、类方法的区别 1. 构造方法 构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。必须...
  • ① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。 ②对象的数据封装特性还可以把...
  • Java构造方法纪要

    2020-05-25 23:51:23
    Java构造方法构造方法构造方法是每个对象类特殊的方法,他不同于其他方法; 其主要特征如下: 1. 构造方法的名字一定是和它的类名相同; 2. 构造方法没有具体的返回值;void无返回关键字也没有; 3...
  • 调用方法及构造方法

    2018-12-10 15:24:20
    调用方法(现阶段) 同类中的方法可以直接互相调用,直接调用“方法名()” main()方法除外 即使main()方法与其他方法在同一个类中也需要通过新建main()方法所类中的对象,...2.通过在main()方法中新建成员变量所在类...
  • Java入门--构造方法

    2017-08-18 10:15:47
    3、构造方法调用:在主函数新建一个类相应的引用变量时,会调用相应的构造方法对变量进行初始化(注意这里是相应的构造方法,一定不要误解为所有的构造方法都会被调用),当一个类没有声明构造方法时,编译器会...
  • 方法名(实参列表) -构造方法调用:new 构造方法名(实参列表) 只要构造方法调用,一定会创造对象 8.构造方法调用后有返回值吗? 每一个构造方法实际上结束之后都有返回值,但是这个"return 值;"这样的语句不需要写。...
  • Java学习笔记之构造方法和static使用

    千次阅读 2016-05-27 17:37:22
    2.构造方法是定义在Java的一个用来初始化对象的方法,构造方法与类同名且没有返回值 static静态变量 类被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是...
  • 继承继承注意的问题:1 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型; 重写方法不能使用比被重写方法更严格的访问权限。重写是类与类之间的关系,两者必须是...
  • 1 构造方法(Constructor)  1.构造方法和字段、方法一样,都是类的成员之一;...构造方法内部不需要返回任何的数据(实际效果是调用后把创建好的对象返回)。1.1 构造方法的特点  1.每一个类至少有一个构
  • 然后,控制流程执行方法中的语句。当然,被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法。所有的方法调用都维护在一个称为调用栈的结构中。当前正在执行的方法位于调用栈的顶部。当前方法执行完成后,...
  •  //不能再非构造函数使用this调用构造函数  System.out.println("petalCount = " + petalCount + "s = " + s);  }  public static void main(String[] args) {  // TODO Auto-generated method stub ...
  • java final 构造方法

    千次阅读 2017-09-23 10:29:13
    final 变量能被显式地初始化并且只能初始化一次。被声明为final的对象的...final方法可以被子类继承,但不能被子类修改。 final类不能被继承。 非访问控制修饰符 : final, abstract, strictfp String inpu
  • 作为一名软件工程系的大一新生,在大一上学期简单地了解了C++的小知识后,决定学习JAVA语言,今天是我学习JAVA语言的第二天,在我的老师的鼓励之下,决定每隔一段时间谢谢博客来发表自己的一些浅显的看法,用以记录...
  • 重载和重写的区别? 1)重写override 方法名、参数、返回值相同。 子类方法不能缩小父类方法的访问权限。 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)... 存在于父类和子类、同类中。 Jav...
  • 1.Java中什么是类,及什么是对象 ... java的一种特殊方法,方法名与类名相同,一般用来初始化一些成员变量 当要生成一个类的对象(实例)的时候就会调用类的构造方法。其特点有: (1)构造方法名称与类名相
  • 中构造方法

    2020-07-18 09:37:52
    //创建无参构造方法,方法名同类名必须一样 public ClassRoom() { System.out.println("这是班级的构造方法"); } //创造一个有参的构造方法 public ClassRoom(String name) { this.name= name;//this...
  • 方法重载 变量 封装 import 继承 重写父类方法 调用父类构造方法 多态
  • 构造方法构造方法的意义:对象都有构造方法构造方法是由类实例化或者说创建一个对象所用的方法如果没有,编译器加一个default(默认值)构造方法包括抽象类也有构造方法,抽象类的构造方法可以被子类调用,但是...
  • Lambda表达式关于方法调用方式,常用有以下几种:一、通过:方法调用:1.对象::实例方法名2.类名::静态方法名3.类名::实例方法名二、通过:构造器引用:类名:newor数组类型:new具体示例参考以下示例代码:import ...
  • java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序:  首先,在类加载时,为类的静态成员变量分配内存空间,并为其赋予默认值(整数型为0,浮点型为0.0,布尔型为false,字符型为'\u0000',引用...
  • 构造方法的使用,省略了getter和setter方法,可以直接从main中调用并直接赋值,其赋值方法也一定是和构造方法中的变量命名方式是对应的,就是下图的两块内容必须是对应: 同时,构造方法里也可以什么都不写,也是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,314
精华内容 6,125
关键字:

java同类中构造方法调用构造方法

java 订阅