精华内容
下载资源
问答
  • !...创建子类对象时,Student s = new Student("school"); 该构造方法中没有显示调用父类构造方法,但还是编译成功了,!...该构造方法调用自身的构造函数,此构造函数中有调用父类构造方法,执行成功的原因是什么
  • 并且测试类里面实例化的是子类的带参构造方法,那么,此时不会先调用父类无参构造方法,而是先调用父类参构造方法再调用子类的有参构造方法; 下面上代码和结果: 结果是: 2.2、子类父类同时...

    1.子类和父类都定义了带参和无参构造方法,且在子类中第一行写了super(xx);并且测试类里面实例化的是子类的带参构造方法,那么,此时不会先调用父类的无参构造方法,而是先调用父类有参构造方法再调用子类的有参构造方法;

    下面上代码和结果:

     

    结果是:

    2.2、子类和父类同时具有有参和无参的构造方法,子类有参构造方法中第一行写的没有super.(xx),且子类实例化时用的是有参构造方法,那么此时会先调用父类的无参构造方法,再调用子类的有参构造方法;

    代码还是相同,只是去掉子类中的super(xx);

    结果:

     

    3.子类和父类同时具有有参和无参的构造方法,子类无参构造方法中第一行写的有super.(),且子类实例化时用的是无参构造方法,那么此时先调用父类的无参构造方法再调用子类的无参构造方法;

    代码相同,子类无参构造方法中添加super(xx);同时用无参构造来实例化子类

    结果:

    4.子类和父类同时具有有参和无参的构造方法,子类无参构造方法中第一行写的没有super.(),且子类实例化时用的是无参构造方法,那么此时会先调用父类的无参构造方法,再调用子类的无参构造方法;

    代码相同,子类无参构造方法中删除super();同时使用无参构造方法实例化子类

    结果:

    5.父类具有有参和无参的构造方法,但子类只有有参且第一行写的没有super.,那么子类实例化时会先调用父类的无参构造方法,再调用子类的有参构造方法;

    结果:

    6.父类具有有参和无参的构造方法,但子类只有无参且第一行写的没有super.,那么子类实例化时会先调用父类的无参构造方法,再调用子类的无参构造方法;

    结果:

    7.父类具有有参和无参的构造方法,但子类只有有参构造方法且第一行写的有super.,那么子类实例化时先调用父类的有参构造方法,再调用子类的有参构造方法;

    结果:

    8.父类具有有参和无参的构造方法,但子类只有无参构造方法且第一行写的有super.,那么子类实例化时先调用父类的无参构造方法,再调用子类的无参构造方法;

    结果:

    9.假如父类只有有参构造方法,子类也只有有参构造方法,那么子类的有参构造方法中必须写super.xx,不然编译会不通过。

     

    自己试过了的,应该没错,出错了希望大家告诉我

    展开全文
  • Java子类调用父类构造方法

    万次阅读 多人点赞 2017-09-29 14:49:15
    Java中,子类构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?   答案如下:   当你new一个子类对象的时候,必须首先要new一个父类...

    在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?    

       答案如下:    

        当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以:    

         第一个规则:子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是这样就会调用父类没有参数的构造方法,如果父类中没有没有参数的构造方法就会出错。    

         第二个规则:如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数。

      

    复制代码
     1 //当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。
     2 class Animal{
     3   private String name;
     4   
     5   //如果你定义一个新的构造方法
     6   public Animal(String name) {
     7     this.name = name;
     8   }
     9 }
    10 
    11 public Dog extends Animal{
    12   
    13   //这时你就要显示的调用父类的构造方法,因为子类默认调用的是父类的
    14   //无参构造方法Animal()
    15   public Dog(){
    16     super("小狗");  //显示调用父类的有参构造方法
    17 
    18     ....  //子类的构造方法处理
    19   }
    20 }
    21 
    22 //当然,如果你在父类里面把无参的构造方法,显示的写出来了,比如:
    23 class Animal{
    24   private String name;
    25 
    26   //无参的构造方法
    27   public Animal() {
    28     .....  //处理
    29   }
    30   
    31   /*
    32   如果你定义一个新的构造方法,那么在子类的构造方法中,就可以不用显示的调用父类的构造方法,因为子类有个无参的构造方法,
    33   子类在构造方法中会自动调用父类已经定义的无参构造方法。
    34   */
    35   public Animal(String name) {
    36     this.name = name;
    37   }
    38 }
    复制代码

    总结:不过一般的,在父类中使用了构造方法的重载,在子类中就可以根据需要,调用相应的父类构造方法。

    展开全文
  • JAVA是一门面向对象的编程语言,与其它的面向对象的编程语言类似,继承,多态等的设计模式是一致的,在我刚开始学习Java的时候,在子类如何调用父类构造方法上面花费了很长的时间去理解,我想了很长一段时间,不知道java...

     JAVA是一门面向对象的编程语言,与其它的面向对象的编程语言类似,继承,多态等的设计模式是一致的,在我刚开始学习Java的时候,在子类如何调用父类的构造方法上面花费了很长的时间去理解,我想了很长一段时间,不知道java为什么这样去设计,现在就把我的感想分享给大家,希望到帮助大家在探索的道路上少走弯路.

    总结如下:


    1.如果父类中有构造方法:

        1.父类中有无参的构造方法,在我们创建子类对象时,如果不显示的进行调用,系统会帮助我们自动去进行调用.

        2.父类中有无参的也有有参的构造方法,这个时候如果我们不去显示的调用的话,系统就会自动的去调用无参的构造方法,我们也可以去显示的进行调用

       3.父类中只有有参的构造方法,这个时候在子类的构造方法里,我们必须无显示的调用这个有参的构造方法.

    2.如果父类中没有构造方法,那么子类在创建对象的时候,系统会自动的去调用系统默认的无参的构造方法.

    ps:一般来说,我们的子类中都会有构造方法,子类和父类中同时没有构造方法的情况很少,因为这不符合我们实际开发的要求.但是对于这种情况,我们可以这样去理解:如果我们的父类和子类中都没有构造方法的话,在这个时候JVM会采取系统默认的构造方法,所以在这种情况下,都会调用系统默认的构造方法,即什么也不做

    下面给出一个实例:

    class Father{
    
    	public void display(){
    		System.out.println("This is Father");
    	}
    }
    class Son extends Father{
    	
    }
    public class Text {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Son son=new Son();
    		son.display();
    	}
    
    }
    这样我们就好理解了吧.
    展开全文
  • 一句话概括就是:子类一定会调用(不是继承)父类构造方法! 即遵循一个原则:子类的构造一定是在父类已构造的基础上!(以上属于自己归纳,可能有问题) 这句话要分为几种情况来理解(下面只讨论父类有构造函数)...

    编写JAVA作业时在继承的环节发现了一些错误,希望总结一些规律:(以下全部属于自己归纳,可能有问题)

    一句话概括就是:子类一定会调用(不是继承)父类的构造方法!

    即遵循一个原则:子类的构造一定是在父类已构造的基础上!

    这句话要分为几种情况来理解(下面只讨论父类有构造函数):

    子类构造函数自动调用super() (也可以手动加上)

    但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中包含对super(args)的调用

    一、父类含有无参构造函数

    1、子类没有构造方法或者含有无参的构造方法:

    这种情况,都会默认地调用super()

    2、子类含有有参数构造方法:

    同样会在首句默认调用super()                //其实跟情况1类似

    二、父类含有含参数的构造方法,不含无参数的构造方法:

    子类没得选择:

    子类必须申明一个构造方法(且含super的args),且方法里要首先调用super(args),否则报错。

    三、父类含 含参数的构造方法和无参的构造方法:

    此时子类可以选择性调用:

    可以无构造方法:仍会默认调用super()

    也可以有构造方法:其中会默认地调用super(),你也可以在开头加上这句,如果你不希望调用父类默认的无参方法,那么在 子类构造方法 中调用 父类含参构造方法。


    上述看似情况复杂,其实基于其原则理解并不难。


    综上:java为了保持  子类的构造基于父类的构造  这一原则,子类构造时必须通过某些方式首先调用父类的构造方法,否则会报错。

    展开全文
  • 简单说,如果子类继承父类自己写构造方法中没有显示调用父类参构造方法,则会先隐式调用父类无参构造方法,若是先显示(super(300))调用了父类参构造方法,则父类无参构造方法就不会再被调用。 ...
  • 子类参构造方法父类构造参数的问题 看一段代码 class Base{ public Base(String s){ System.out.print("B&amp...
  • 阅读Test.java代码,运行结果为? class Person { String name = "No name"; public Person(String nm) { name = nm; } } class Employee extends Person { String empID = "...
  • 子类实例化时,首先调用父类构造方法然后再调用子类构造方法父类构造方法super()或super(XXX)存在于子类构造方法的代码的最上部。 最不起眼的方式是在子类的默认构造方法中,隐式的调用super().那么子类的...
  • 子类在继承父类构造方法时,默认会隐式调用。即在编译时默认加入:子类构造方法名(){ super(); //super关键字调用父类构造方法 }这个特性决定了,如果父类里显示地声明了构造方法,并附有参数列表的话,子类...
  • java子类调用父类构造器函数

    万次阅读 多人点赞 2019-06-25 15:52:54
    java子类调用父类构造器函数详解
  • Java子类继承父类构造

    千次阅读 2018-05-04 11:16:26
    2.子类父类构造器执行顺序?二、创建父类创建父类Animal,有两个构造器class Animal{ private Integer high; public Animal() { System.out.println("Animal()"); } public Animal(Integer high)...
  • Java子类实例化调用父类构造方法

    千次阅读 2019-03-13 14:09:25
    子类继承父类后,获取到父类的属性和方法,这些属性和方法在使用前必须先初始化,所以须先调用父类构造器进行初始化 同时父类也会加载进来,静态代码块会执行 ...
  • Java中Object类是其他所有Java类的基类(直接或间接继承),在Object类中会有一个默认的无参构造方法:public Object(){};在所有的Java类中如果没有显式的写出构造方法,也同样会默认一个无参构造方法.作为所有Java类...
  • public class A { public String name;... System.out.println("父类参数构造方法"); } public A(String str){ this.name=str; System.out.println("父类的有参数构造方法"); } } ...
  • Java子类调用父类构造方法

    千次阅读 2020-05-20 20:44:47
    一、自动调用父类无参构造方法 //这是父类 public class SuperClass { //父类无参构造方法 public SuperClass(){ System.out.println("父类无参构造方法"); } //父类参构造方法 public SuperClass(String ...
  • Java中,子类实例化时会调用父类构造方法子类父类方法中会有一个函数生成表,执行时实现动态链接,子类重写父类方法时执行顺序也是这样  对于执行父类构造方法的问题。可以归纳为两种情况 1,如果...
  • java 子类父类构造函数关系
  • 表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用...子类构造方法调用父类构造方法用super(参数列表) 子类调用父类的构造方法时: super必须放在第一句 Java在执行子类的构造方法...
  • 子类调用父类构造方法问题

    千次阅读 2010-01-26 10:07:00
    Java中,子类构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这...
  • java中如果一个类中没有显式的使用super()进行调用超类的构造方法,则在执行子类构造方法之前会首先待用父类构造方法,如下:/** * Created by zhuxinquan on 15-11-24. */class Circle{ double radius = 10;...
  • Java 子类调用父类构造函数----super()详解

    万次阅读 多人点赞 2017-07-17 16:51:54
    Java 子类调用父类构造函数----super()详解
  • 其实子类的所有构造方法的第一行都有一条隐示super()或者显示的super() 隐示super() 先说一下什么情况下会有隐示的super()。 1.子类构造函数中没写super()并且子父类具有无参构造函数。那么子类第一行便会自动一条...
  • super().__init__(父类构造函数需要的参数,不包括self) class People: def __init__(self, name, age): self.name = name self.age = age class Student(People): def __init__(self, name,...
  • 面向对象(继承中构造方法的注意事项) A:案例演示(核心点在于子类构造方法中的第一句必须是父类构造方法的执行,如果父类...父类没有无参构造方法,只有有参构造方法子类怎么办? super解决: this解决 B:注...
  • 子类不能继承父类的构造器,但是在子类生成实例的时候必然会先调用父类的构造器,也就是在子类...若父类的构造器是带构造器,则子类的构造器必须显式地用super(xx)调用父类构造器;子类可继承父类非private及非fin...
  • 先上问题:为什么我的子类无参调用父类会出错??有同学这样问我,上图。class Person{ public Person(String name) { System.out.println("My name is "+name); } } class Man extends Person{ private ...
  • 1、Java子类自动调用父类无参构造方法 例1:class Test1{ public Test1(){ System.out.print("1"); } } class Test2 extends Test1{ public Test2(){ System.out.print(" 2"); } } public class Tes
  • java中return super.父类构造方法 是神马意思 可以 java中return super.子类构造方法 是神马意思 java中return super.方法 是神马意思
  • 继承继承中注意的问题:1 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型; 重写方法不能使用比被重写方法更严格的访问权限。重写是类与类之间的关系,两者必须是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 209,944
精华内容 83,977
关键字:

java无参子类覆盖父类的构造方法

java 订阅