精华内容
下载资源
问答
  • 原则:当父类仅有带有参数的构造方法时,子类构造方法必须使用super(参数) super()表示父类的构造方法子类默认调用父类无参构造方法。 一旦父类仅定义了带参数的构造方法,表示创建父类必须使用带参数构造...

    原则:当父类仅有带有参数的构造方法时,子类的构造方法中必须使用super(参数)

    super()表示父类的构造方法,子类默认调用父类无参构造方法。

    一旦父类仅定义了带参数的构造方法,表示创建父类必须使用带参数构造方法,不接受new父类时不带参数,那么此时子类里默认的调用super()就会报错,不带参数的父类构造方法不存在,必须手动加上含有参数的构造方法。

    public class practice {
        public static void main(String[] args) {
            Sun s =new Sun();
            s.show();
        }
    }
    class Dad{
        public int age;
        Dad(int age)
        {
            this.age = age;
        }
        void show(){
            System.out.println(age);
        }
    }
    class Sun extends Dad{
        public int age=10;
        public Sun()
        {
            super(35);
        }
    }

    如果去掉super将会提示错误信息There is no default constructor available in 'basic.Dad'

    展开全文
  • * 即子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法, * 之所以会调用父类中的构造方法,就是用父类的构造方法为父类中的属性初始化, * 就表示先有父类实例,然后才.
    package com.hiyo.HighClass;
    
    /**
     * Author:hiyo585
     * Company:hiyo design studios ;
     * Cont:18961810626
     *子类对象的实例化过程
     * 先调用父类中的构造函数,
     * 再调用子类的构造函数进行实例化操作
     * 即子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法,
     * 之所以会调用父类中的构造方法,就是要用父类的构造方法为父类中的属性初始化,
     * 就表示先有父类实例,然后才能产生子类实例
     */
    
    class House {
        private String name ;
        private float price ;
        public House(){//父类的构造方法
            System.out.println("父类House中的构造方法!");
        }
        public void setName(String name) {
            this.name = name ;
        }
        public void setPrice(float price) {
            this.price = price ;
        }
        public String getName(){
            return this.name ;
        }
        public float getPrice() {
            return this.price ;
        }
    }
    class TownHouse extends House {
        public TownHouse(){
            //子类的构造方法相当于又一个super() ;
            super() ;//可以不写,结果一样
            System.out.println("子类的构造方法");
        }
        private String town ;
        public String getTown(){
            return this.town ;
        }
        public void setTown(String town) {
            this.town = town ;
        }
    }
    public class ExtendDemo2 {
        public static void main(String[] args) {
            TownHouse th = new TownHouse() ;
            th.setName("AA");
            th.setPrice(30000.00f);
            th.setTown("BB");
            System.out.println(th.getTown() + th.getName() + th.getPrice());
        }
    }
    
    /*
    父类House中的构造方法!
    子类的构造方法
    BBAA30000.0
    */

    展开全文
  • 这个是Java的规定:子类继承父类,子类构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。 1、为什么在实例化子类的对象时,会先调用父类的构造器? 答:子类继承父类后,获取到父类的...

    这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。

    1、为什么在实例化子类的对象时,会先调用父类的构造器?

    答:子类继承父类后,获取到父类的属性和方法,这些属性和方法在使用前必须先初始化,所以须先调用父类的构造器进行初始化

    2、在哪里调用父类的构造器?

    答:在子类构造器的第一行会隐式的调用 super();,即调用父类的构造器

    如果父类中没有定义空参的构造器,则必须在子类的构造器的第一行显示的调用super(参数); ,以调用父类中构造器

    如果子类中构造器的第一行写了this();,则就隐式的super();会消失,因为super()this()都只能在构造器的第一行定义


    转载:
    Java构造方法之super用法_Java_jcaksonsen的博客-CSDN博客
    Java为什么在实例化子类的对象时,会先调用父类的构造器_Java_万万的学习笔记-CSDN博客

    展开全文
  • java 子类构造方法

    2021-02-28 14:12:25
    继承中构造方法的关系* A:案例演示* 子类中所有的构造方法默认都会访问父类中空参数的构造方法* B:为什么呢?* 因为子类会继承父类中的数据,可能还会使用父类的数据。* 所以,子类初始化之前,一定先完成父类数据...

    继承中构造方法的关系

    * A:案例演示

    * 子类中所有的构造方法默认都会访问父类中空参数的构造方法

    * B:为什么呢?

    * 因为子类会继承父类中的数据,可能还会使用父类的数据。

    * 所以,子类初始化之前,一定要先完成父类数据的初始化。

    * 其实:

    * 每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。

    =============================================================================

    继承中构造方法的注意事项:

    * A:案例演示

    * 父类没有无参构造方法,子类怎么办?

    * super解决

    * this解决

    * B:注意事项

    * super(…)或者this(….)必须出现在构造方法的第一条语句上

    =======================================================================

    class Test2_Extends {

    public static void main(String[] args) {

    Zi z = new Zi();

    }

    /*

    1,jvm调用了main方法,main进栈

    2,遇到Zi z = new Zi();会先将Fu.class和Zi.class分别加载进内存,再创建对象,当Fu.class加载进内存

    父类的静态代码块会随着Fu.class一起加载,当Zi.class加载进内存,子类的静态代码块会随着Zi.class一起加载

    第一个输出,静态代码块Fu,第二个输出静态代码块Zi

    3,走Zi类的构造方法,因为java中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行

    父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以

    第三个输出构造代码块Fu,第四个输出构造方法Fu

    4,Fu类初始化结束,子类初始化,第五个输出的是构造代码块Zi,构造方法Zi

    */

    }

    class Fu {

    static {

    System.out.println("静态代码块Fu");

    }

    {

    System.out.println("构造代码块Fu");

    }

    public Fu() {

    System.out.println("构造方法Fu");

    }

    }

    class Zi extends Fu {

    static {

    System.out.println("静态代码块Zi");

    }

    {

    System.out.println("构造代码块Zi");

    }

    public Zi() {

    System.out.println("构造方法Zi");

    }

    }

    ========================================================================

    面向对象(继承中的面试题)

    * A:案例演示

    *

    看程序写结果1

    class Fu{

    public int num = 10;

    public Fu(){

    System.out.println("fu");

    }

    }

    class Zi extends Fu{

    public int num = 20;

    public Zi(){

    System.out.println("zi");

    }

    public void show(){

    int num = 30;

    System.out.println(num);

    System.out.println(this.num);

    System.out.println(super.num);

    }

    }

    class Test1_Extends {

    public static void main(String[] args) {

    Zi z = new Zi();

    z.show();

    }

    }

    看程序写结果2

    class Fu {

    static {

    System.out.println("静态代码块Fu");

    }

    {

    System.out.println("构造代码块Fu");

    }

    public Fu() {

    System.out.println("构造方法Fu");

    }

    }

    class Zi extends Fu {

    static {

    System.out.println("静态代码块Zi");

    }

    {

    System.out.println("构造代码块Zi");

    }

    public Zi() {

    System.out.println("构造方法Zi");

    }

    }

    Zi z = new Zi(); 请执行结果。

    展开全文
  • 我们都知道,一个类在继承一个类之后,是必须要初始化这个父类的,不然你子类继承父类的那些参数,无法初始化。所以在子类继承父类后,必须调用父类里面的构造方法。 目的就是为了初始化父类的参数,子类才能使用 ...
  • 父类的构造方法不能被子类继承。以下语句中MyException类继承了java.lang.Exception类。public class MyException extends Exception{} //MyException类只有一个隐含的默认构造方法尽管在Exception类中定义了如下...
  • 私有的方法无法被继承,私有的属性也无法直接访问,但可以通过get和set方法来进行获取或者修改。 super代表父类,this代表...父类与子类的无参构造方法执行的先后顺序。构造函数在new对象时会被直接调用,测试类中new
  • public class SuperTest02 { public static void main(String[] args) { new C(); } } class A1{ public A1() { System.out.println("1"); } } class B1 extends A1{ ... //super() System.ou
  • 在子类的构造方法中使用super([参数列表])来调用父类的构造方法,调用父类构造方法的super()写在子类构造方法中的第一句。如果在子类的构造方法中没有显示的调用父类的构造方法,那么会自动调用父类的空参构造方法...
  • 子类构造方法与父类构造方法的关系 先来看代码 public class Demo2 {//这是父类 public Demo2(){//写出父类默认的构造方法 System.out.println("demo2类的无参构造方法"); } public Demo2(int a){//父类有参...
  • 因为子类不可以继承父类的构造方法,所以,想调用父类的构造方法的话,那么就可以使用得到super关键字下面的话就来对这个方面做一下详细的讲解。super关键字能够用来访问父类的构造方法、普通方法和属性。super...
  • 2.如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需在子类构造函数中显式调用super(); (即子类的构造函数中默认调用父类的无参构造函数,只不过第一行代码:super();一直被省略...
  • 想了半天终于想到一个好的例子,比书上的Person4什么好看多了,新手作品,仅供...public Animal(String name,int age)//构造方法{//注意eclipse或者sublime里面观察颜色this.name = name;this.age = age;System.out....
  • 由于子类不能继承父类的构造方法,因此,调用父类的构造方法必须子类构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。在以下情况下需要使用 super 关键字...
  • 问题详情子类构造函数中,第一句写不写super()都一样吗?下面这个程序的输出总是fatherchild为什么有没有super()调用,结果都一样呢?那么ctor里面第一句话写上super()又有什么意义呢?----------------------------...
  • Animal (int a){ //看到这里想到,此时有参构造已经代替了默认的无参构造,并且该构造方法只能在本包中的类类名创建对象 this.a = a; System.out.println("Animal类的有参构造"); } } class Bird extends ...
  • 【单选题】下面是有关子类调用父类构造函数的描述正确... 创建子类的对象时,子类构造方法总是先调用父类的构造函数更多相关问题教育科学研究遵循的基本愿则有:客观性原则、系统性原则、理论与实践相结合原则、教...
  • 49%等级:11已帮助:6046人定,private修饰的变量和方法不可被子类继承,在子类中可以增加子类的变量和方法3.(你写重复了)所有子类在产生对象是,都会默认去调用父类的构造方法,你可以测试一下。4.动态绑定对两个有...
  • 如果父类有自己的构造方法(这时父类不会有默认无参的构造方法),那么在子类构造方法中,必须要调用父类的某个构造方法,而且必须是在构造方法的第一个语句中进行调用。 此时再创建子类实例就需要显示的调用父类的...
  • 1)现在子类方法局部范围内找,找到就返回 2)子类中成员范围内去找,找到就返回 3)在父类的成员范围内去找,找到就返回 4)如果在父类中都没有找到该变量,报错 package extendsDemo; class Person{ int num = ...
  • Java里子类调用父类构造方法问题

    千次阅读 2021-02-13 01:44:43
    在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?...构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出...
  • super(实际参数列表)”这种语法表示子类构造方法执行过程中调用父类的构造方法。 下面来看一段代码: public class People{ String idCand; String name; boalean sex; public People(){ }
  • packagecom.wtd;public abstract classCar {private String name= "car";publicCar(String name) {this...}}public class JeepCar extendsCar {publicJeepCar(String name){super(name);}}现在我创建JeepCar的实例...
  • 我奶奶都能懂java子类构造方法

    多人点赞 热门讨论 2021-05-30 16:12:23
    前段时间博主考了一个Oracle举办的考试,发现构造方法中有一些小坑,特别是子类构造方法,平时工作很容易忽略的,所以在这里打算总结一下这里的小坑。 定义 我们在学习java的时候,老师都会说一个类主要有三部分...
  • 在讲之前,一些基本知识是应该具备的:1、如果一个类中没有定义构造器,编译器在编译时会自动加上默认无参构造器:public ClassName() {}2、this 和 super 的区别。3、每个类直接或间接是Object的...
  • 子类不可以继承父类的构造方法,只可以调用父类的构造方法子类中所有的构造函数都会默认访问父类中的空参数构造函数,这是因为子类的构造函数内第一行都有默认的super()语句。 super()表示子类在初始化时调用...
  • 1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super: 它引用当前对象的直接父类中的成员(用来访问直接...
  • java中的继承(子类调用父类构造方法还不懂)declarations n. 声明extends v. 继承继承中注意的问题:1 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型;重写方法不能...
  • 使用子类构造时候父类没有提供无参构造 当父类没有提供无参构造,在写子类构造器时候会报错 public class Animals { private String name; private int age; public Animals(String name, int age) { // super...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,794
精华内容 74,717
关键字:

super子类构造方法必须要