精华内容
下载资源
问答
  • Java调用构造方法,那就是子类调用基类(父类)的构造方法,如何调用,请看详细内容。子类中的构造方法的规则子类的构造过程中必须调用其基类的构造方法。子类可以在自己的构造方法中使用super(argument_list)调用基类...

    Java调用构造方法,那就是子类调用基类(父类)的构造方法,如何调用,请看详细内容。

    8d2702e38c6668ccf218bb9f71fc626d.png

    子类中的构造方法的规则

    子类的构造过程中必须调用其基类的构造方法。

    子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。

    如果使用this(argument_list)调用本类的另外构造方法。

    如果调用super,必须写在子类构造方法的第一行。

    如果子类的构造方法中没有显示的调用基类的构造方法,则系统默认调用基类的无参数构造方法。

    如果子类构造方法中既没有显示调用基类构造方法,而基类又没有无参数的构造方法,则编译出错。

    示例如下:class SuperClass{

    private int n;

    //SuperClass(){

    // System.out.println("SuperClass()");

    //}

    SuperClass(int n){

    System.out.println("SuperClass(int n)");

    this.n = n;

    }

    }

    class SubClass extends SuperClass{

    private int n;

    SubClass(){

    super(300);//调用父类的有参构造方法

    System.out.println("SuperClass");

    }

    SubClass(int n){

    System.out.println("SubClass(int n):"+n);

    this.n = n;

    }

    }

    public class TestSuperSub{

    public static void main (String args[]){

    //SubClass sc = new SubClass();

    SubClass sc2 = new SubClass(200);

    }

    }

    依次验证上面的语法。

    展开全文
  • 顶java的确有其局限性,但应该不是你所说的这个场景应该是你代码写的有问题那我这个场景应该怎么写呢你这种情况,应该用接口,而...如你所云:/*用创建Boy的构造方法造就出一个男孩,但其引用可以是Person类。*/Pers...

    java的确有其局限性,但应该不是你所说的这个场景

    应该是你代码写的有问题那我这个场景应该怎么写呢

    你这种情况,应该用接口,而不是继承。把要暴露出来的方法定义在接口,别人使用时候就不会出现转型问题了。

    男孩是人,但人未必是男孩。

    一个男童,是不是人?回答:是。所以,Boy的引用,可以看作是Person类的引用。如你所云:

    /*用创建Boy的构造方法造就出一个男孩,但其引用可以是Person类。*/Personp=newBoy();/*由于p是由创建Boy的构造方法造就出来的,所以可以将其引用转变成Boy类*/Boyboy=(Boy)p;

    但是,将一个父类引用转为子类引用,虽然编译通过,但动态执行时就会报错。这不是代码写得有问题,而是这种思维逻辑不对:

    一个人是否是男童?回答:未必。这就是你所说的情况:将一个父类引用转为子类引用,虽然编译通过,但动态执行时就会报错。所以

    /*创建一个Person类的实体(引用)*/Personp=newPerson();/*由于p是由创建Person的构造方法造就出的,尽管编译通过,但运行起来,就会停机报错*/Boyboy=(Boy)p;

    子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特。父类类型的引用只能调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的东西,是无可奈何的。因此,将父类类型的引用指向子类的对象,尽管编译通过,但在程序运行中,就会停机报错。理解很透彻啊

    父类必定不能转子类啊(当然你用父类引用引用的对象本身就是子类,自己转自己肯定没问题)...

    至于你出现这样的需求,不是java的问题,是在接口设计就有问题了。

    父类不能转子类嗯就是这样

    醒醒,这是面向对象的基础规则,什么时候变成安全性了

    先别写框架

    欢迎加入 java开发群262087628互相学习共同进步 请问:如何加入?

    逻辑不是很对,Person不是Boy专有的父类,你不能要求每个Person都能转换成Boy,可以添加一个条件pinstanceofBoy,只有当Person对象是Boy的实例的时候,才这样转换

    展开全文
  • 在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?...构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出...

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

    答案如下:

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

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

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

    1 //当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。

    2 classAnimal{3 privateString name;4

    5 //如果你定义一个新的构造方法

    6 publicAnimal(String name) {7 this.name =name;8 }9 }10

    11 public Dog extendsAnimal{12

    13 //这时你就要显示的调用父类的构造方法,因为子类默认调用的是父类的14 //无参构造方法Animal()

    15 publicDog(){16 super("小狗"); //显示调用父类的有参构造方法

    17

    18 .... //子类的构造方法处理

    19 }20 }21

    22 //当然,如果你在父类里面把无参的构造方法,显示的写出来了,比如:

    23 classAnimal{24 privateString name;25

    26 //无参的构造方法

    27 publicAnimal() {28 ..... //处理

    29 }30

    31 /*

    32 如果你定义一个新的构造方法,那么在子类的构造方法中,就可以不用显示的调用父类的构造方法,因为子类有个无参的构造方法,33 子类在构造方法中会自动调用父类已经定义的无参构造方法。34 */

    35 publicAnimal(String name) {36 this.name =name;37 }38 }

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

    展开全文
  • 看了半天愣是没看出来,这是怎么调用的其中的方法,如下: new ListenBeanJob(fal);//这是调用的方法 我赶紧去找父类里面的构造方法,按照执行顺序来说的话,应该是在父类里面的构造方法中调用了msfile()方法,...

    今天看磊哥代码,看到了他调用了一个方法的构造方法,我本来是去看业务逻辑的,看看到底这货是怎么实现的我要的那个业务流程。看了半天愣是没看出来,这是怎么调用的其中的方法,如下:

    new ListenBeanJob(fal);//这是调用的方法

    我赶紧去找父类里面的构造方法,按照执行顺序来说的话,应该是在父类里面的构造方法中调用了msfile()方法,然后子类重写这个方法,执行的。

    如果不明白这个执行顺序的,我帮你们找到了

    可以参考:https://www.cnblogs.com/dier306/p/5521513.html

    然鹅,我去看了父类,什么都没有,如下:

    我彻底懵逼了,怎么回事,赶紧摇人!问一问当事人。

    他给我解释说,这个就是一个机制,给我举了一个例子,线程Thread类中run()方法是如何实现的。怎么run()方法就能单独的跑起来。这是为什么呢?

    带着疑问,我们看了源码:

    Thread类实现了Runnable接口,里面有run方法,然后继续看Runnable接口:

    里面的一个抽象的run方法就能执行了。虽然他也没给我讲明白这里面的到底是个什么机制,但是他的这个业务逻辑里面,其中

    ListenJob就实现了一个Callable<Object>接口,里面就有一个抽象的方法,叫call,这也就是为什么说和Thread类很类似,然后我似懂非懂的点了点头。Callable<Object>接口可以看一下下面的参考。

    参考:https://blog.csdn.net/u014785687/article/details/78502707

    还是差很多啊!继续加油吧!

    今天就到这里吧!收货还是有的,就是有点不明白所以然,自己又不是一个特别爱钻研的一个人。这可咋整。先工作。

    打完收工!!!

    展开全文
  • 原因在于当实例化子类时会递归调用父类中的构造方法。而这又是为什么呢? 首先,这涉及到Java对象的生命周期。在Java中,对象的生命周期包括以下几个阶段: 创建阶段(Created) 应用阶段(In Use) 不可见阶段...
  • JAVA—继承构造方法的访问特点(super调用父类构造方法怎么调?super和this的区别) 1.子类构造方法当中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行子类构造;如下例子 父类: public ...
  • 展开全部一般正常的都是参数多的调用参数少的。...那你有参的参数你需要怎么传呢。当然如果换一个角度也可以。我手写下。没经过IDE的。提供下思路。我有两种思路,写同一个功能。public class Person{privat...
  • 构造方法是专门用来创建对象的,也就是在new对象时要调用构造方法。现在来看看如何调用构造方法。 class Person { // Person的成员属性age和name private int age; private String name; // ...
  • 给对应对象初始化。...不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载。public class B extends A { ...
  • 展开全部先小小纠正一下,java里面...首先,任何类都有构造方法,难怕是你不写,也会默认你有一个有无参构造方法。,所以你的A里面就会有一个叫A()的构造方法。当你new A()时,默认你有一个有无参构造方法A()的方法...
  • Android开发中一般讲Java接口调用放在APP层,但是如果想对外隐藏Java...下面开始讲解JNI怎么调用Java方法。 首先模拟实现一个类,代表想隐藏的接口 代码如下:   package com.lb6905.jnidemo; import android....
  • 初次看到函数式接口写出的代码可能会是一种懵逼的状态,我是谁,我在哪,我可能学了假的Java,(・∀・(・∀・(・∀・*),但是语言都是在进步的,就好比面向对象的语言Java也可以写出优雅的函数式调用,学习的过程并...
  • java构造方法与重载

    2020-03-26 15:23:58
    1.什么是构造方法——在一个类中定义一个与本类同名的方法就叫构造方法 2.构造方法有什么特点: ...4.怎么调用构造方法 构造方法不能直接调用,它只能在new操作符之后调用 比如Student stu=new S...
  • 把子类传递到父类的有参构造中,然后调用。使用反射的方式调用,你使用了反射还有谁不能调用的?!父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String[] args){...
  • 提到:构造方法用this 作为参数调用 当时我没懂。 后来百度,看到也有小伙伴不懂。 于是,自己写了如下一段代码: BirthDate.java package meta; public class BirthDate { private int day = 1; private...
  • ● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?!● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String...
  • ● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?!● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String...
  • 实例化一个对象的时候,必然调用构造方法 package com.ty.servlet; public class Dawei { String name; float hp; float armor; int moveSpeed; // 方法名和类名一样(包括大小写) /...
  • ● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?!● 父类调用子类的静态方法。案例展示:package com.ywq;public class Test2{public static void main(String...
  • Java 中父类怎么调用子类的方法

    万次阅读 2016-10-24 22:41:38
    ● 把子类传递到父类的有参构造中,然后调用。● 使用反射的方式调用,你使用了反射还有谁不能调用的?! ● 父类调用子类的静态方法。 案例展示: package com.ywq; public class Test2{ public static ...
  • 构造方法

    2020-09-27 08:57:56
    3.调用构造方法怎么调用 使用new运算符来调用运算符 4.构造方法语法结构 [修饰符列表] 构造方法名(形式参数){ 构造方法体 } 注意: 第一:修饰符列表目前统一写:public 。千万不要写public static 第二:构造...
  • C#,在主函数里,有3个if,它们第一行都是实例化对象,还是不太明白,怎么就通过构造函数来调用的呢不是每次仅仅调用showmycomputer方法么,构造函数的作用就是初始化么![图片]...
  • 问:实例化对象构造方法的流程是怎么走的?我输入DrawIconicon=newDrawIcon(800,800);这段程序不是应该只会自动调用DrawIcon的构造方法吗?为何还会实现其他方法?为何输出结果是42312...问:实例化对象构造方法的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 916
精华内容 366
关键字:

怎么调用构造方法