【java – 构造函数必须在方法返回之前调用super()或this()】教程文章相关的互联网学习教程文章

Java之super关键字【代码】【图】

super关键字概述: 1.在Java类中使用super来调用父类中的指定操作。 2.super可用于访问父类中定义的属性。 3.super可用于调用父类中定义的成员方法。 4.super可用于在子类构造器中调用父类的构造器。 注意事项: 1.尤其当子父类出现同名成员时,可以用super表明调用的是父类中的成员。 2.super的追溯不仅限于直接父类。 3.super和this的用法相像,this代表本类对象的引用, super代表父类的内存空间的标识。 1 class Person {2 ...

一个类中的构造函数可以具有多个super()吗? (Java或GWT)【代码】

我有此类公共类IndexedColumn扩展了Column< List< String&gt ;, String>.我希望该类根据不同的键变量来替换不同的对象. 可以使用以下代码,但只有1个超级代码(新的ClickableTextCell())public class IndexedColumn extends Column<List<String>, String>{private final int index;public IndexedColumn(int index) {super(new ClickableTextCell());this.index = index;}@Overridepublic String getValue(List<String> object) {ret...

java-super.onCreate(savedInstanceState)在第一次运行时崩溃【代码】

Firebase崩溃报告捕获的异常:Exception java.lang.RuntimeException: Unable to start activityComponentInfo{com.talmir.mickinet/com.talmir.mickinet.activities.HomeActivity}:android.content.res.Resources$NotFoundException: Resource ID0x7f080058 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2249)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299) android.app...

java-将“ this”传递给this()或super()【代码】

我的问题是这样的: 为什么不能将“ this”传递给对构造函数的显式调用?例:class MyClass {MyClass x;public MyClass(MyClass c){x=c;}public MyClass(){this(this); //error}}解决方法:您试图将对此的引用从一个构造函数传递给同一实例上的另一个构造函数. 在Java中,在从隐式或显式调用返回this()或super()之前,您不能在构造函数中隐式或显式访问此函数.这是因为超类尚未初始化. 您可能需要在构造函数中重复代码:class ...

Java:为什么有人会在默认情况下编写super()?【代码】

这个问题已经在这里有了答案: > Calling super() 12个为什么有人写super(); //(parameterless) 在子类构造函数中,因为如果不存在,则仍会调用默认的无参数超类构造函数?解决方法:我通常使用IDE(即Eclipse)生成构造函数,并且实际上放置了该调用,因此可能是其中一种情况

java中this和super关键字的作用

this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;this可以调用成员变量,不能调用局部变量;this也可以调用成员方法,但是在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。,而且在静态方法当中不允许出现this关键字。 super代表对当前对象的直接父类对象的引用,super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员) super可以调用直接父类...

为什么要用Java调用super()?【代码】

我从阅读的有关Java的书中看到一个示例:public class A{public A(){System.out.println("A");} }public class B extends A{public B(){super();System.out.println("B");}public static void main(String[] args){B b = new B();} }我不明白为什么super()在这里?即使删除super(),我也会得到相同的结果(先打印A,然后打印B).据我了解,当我初始化子类时,父类先于其初始化.那么为什么要使用super()?解决方法:在这种情况下,您无需调用...

java-保持绘制图形-删除super.paintComponent【代码】

我有一个名为Foo的类,该类扩展了一个名为Bar的类,该类扩展了JPanel并实现了ActionListener.当选择“圆”并单击“绘制”按钮时,将绘制一个圆,当按矩形并单击“绘制”时,它将擦除先前的形状并绘制一个矩形. 但是,我希望将所有形状保留在JPanel上,直到选择单击“擦除”按钮.因此,我删除了super.paintComponent(g)并使其工作,但是它也导致Bar类的按钮以小故障的方式重新出现.如何停止重新绘画按钮?我当时在考虑不扩展Bar并使Foo扩展JP...

java基础(12):构造方法、this、super【代码】【图】

1. 构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法。当创建人对象的时候,人对象一创建就要明确其姓名和年龄,那该怎么做呢? 1.1 构造方法介绍 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名、年龄等属性信息。 那么,创建对象就要明确属性值,那怎么解...

java – 扩展通用抽象类和正确使用Super【代码】

public abstract class AbstractTool<AT extends AbstractThing> {protected ArrayList<AT> ledger;public AbstractTool() {ledger = new ArrayList<AT>();}public AT getToolAt(int i) {return ledger.get(i);}// More code Which operates on Ledger ...}public class Tool<AT extends AbstractThing> extends AbstractTool {public Tool() {super();} }如何正确调用super将Tool的AT泛型传递给AbstractTool构造函数? 当我宣布工...

Java:super.clone()方法和继承【代码】

我有一个关于Java中clone()方法的快速问题,在继承方面用作super.clone() – 我在父类中从按钮一直调用clone()方法. clone()方法应该返回这个对象的副本,但是如果我在继承heirachy中有三个类并且调用super.clone()三次,为什么不继承heirachy中的最高类,就在类下面对象,获取该类返回的副本? 假设我们有三个类:A,B和C,其中A – > B – > C(继承= – >) 然后在类C中调用super.clone(),调用B中的clone()调用super.clone(),在A中调用...

java – 为什么我不能在静态上下文中使用“super”变量,即使“super”引用父类而不是类实例,不像“this”?

我说的是java语言. 变量“this”在类中使用时,引用该类的当前实例,这意味着您不能在静态方法中使用“this”. 但是“super”,当在类中使用时,指的是该类的超类,而不是超类的实例,这应该意味着你可以在静态方法中使用“super”.但事实证明你做不到. 一个可能的解释是说“超级”也指的是超类的一个实例,但我不明白为什么它应该……解决方法:以下是JLS中关于super关键字的部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls...

为什么java Android中的super.onDestroy()在析构函数中排在首位?【代码】

参见英文答案 > What is the correct order of calling superclass methods in onPause, onStop and onDestroy methods? and Why? 7个根据哪个逻辑做super.onDestroy();在析构函数中排名靠前?例如:protected void onDestroy() { super.onDestroy();releaseMediaPlayer(); }并不是:protected void onDestroy() { releaseMediaPlayer();super.onDestroy(); }比如c,obj-c,pascal...

JAVA Super限定符

super是java中的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法,正如this不能出现在static修饰的方法中,super也不能出现在static修饰的方法中。static修饰的方法是属于类的,该方法的调用者可能是一个类而不是一个对象,因此super限定符也失去了意义。 如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承到的实例变量,而不是该类自己定义的实例变量。

Java自学-接口与继承 super【代码】【图】

Java的super关键字 步骤 1 : 准备一个显式提供无参构造方法的父类 准备显式提供无参构造方法的父类 在实例化Hero对象的时候,其构造方法会打印 “Hero的构造方法 " package charactor;import property.Item;public class Hero {String name; //姓名float hp; //血量float armor; //护甲int moveSpeed; //移动速度public void useItem(Item i){System.out.println("hero use item");i.effect();}public Hero(){System.out.println("...

构造函数 - 相关标签