看下面的例子,觉得应该输出什么?
public class A { public A() { //先把下面这句去掉 //System.out.println(this.getClass()); set(); } void set() { System.out.println("A"); } static class B extends A { B() { set(); } void set() { get(); System.out.println("B"); } void get(){ } } public static void main(String[] args) { B b = new B(); } }
当时,看到这个题目,犯了两个错误:
1. 不知道new B() 的时候,如果没有指定父类的构造方法,就会默认的调用A(), 也就是super();
new B的时候,必须B这个类加载到内存,可是B是继承自A的,也可以理解为依赖
所以,当然首先得把A加载到内存!
2. 知道会默认的调用父类的构造方法后,不确定调用的到底是哪个set()方法!
其实 ,上面代码打印的应该是两个B,不会调用A中的set
通过在A中的构造方法打印在调用set方法的对象时,注意不是A , 而是A$B
所以,调用的是B中的set方法!
可是,为什么会这样了?
是不是可以这样理解,把B() 中的super()调用看成是"this.super()(实际上子类是不能访问父类的构造方法的,除了使用super)"
super()和它里面的set()都是同一个级别的,也就是都是通过同一个this访问的
这就好比调用B自己类中实现了的set() , 然后set()中又有一个新的方法 get() , 这个get()不就等同于super()中的set()吗?
相关推荐
了解和熟练使用构造方法是Java面向对象编程的基础,下面将详细阐述Java构造方法的相关知识点。 一、构造方法的作用 构造方法的主要任务是在创建对象时设置对象的初始状态,为对象成员变量赋值。当一个类被实例化时...
这里,`<init>`是Java构造方法的特殊标识符,`()`V表示无参数的void构造方法。 对于父类方法,你需要先获取父类的`jclass`,然后按照同样的方式寻找并调用方法。例如,如果`YourJavaClass`继承自`ParentClass`,...
Java 构造方法是编程语言中的一个重要概念,特别是在面向对象编程中,如Java。它们是类的特殊方法,用于初始化新创建的对象。当一个对象被创建时,构造方法会被自动调用,为对象的成员变量赋值,进行必要的设置,...
79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java构造方法.zip79.java...
### Java构造方法详解 #### 一、构造方法基础概念 构造方法是Java中一种特殊的方法,主要用于初始化新创建的对象。每个类至少有一个构造方法。如果程序员没有显式地定义构造方法,Java编译器会自动为类添加一个无...
Java构造方法是面向对象编程中的一个关键概念,用于初始化新创建的对象。在Java类中,构造方法是一个特殊的方法,它的名字必须与类名完全相同,没有返回类型,甚至不包括void关键字。当我们创建一个类的新实例时,...
关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT 关于构造方法的PPT ...
java构造方法的学习对java学习者尤为重要
Java构造方法 Java构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和...
Java构造方法解析 在Java编程语言中,构造方法是一个特殊的方法,它的主要任务是初始化一个新创建的对象。构造方法与类名相同,并且没有返回类型,即使是void也不行。了解和熟练使用构造方法是Java程序员的基本技能...
下面详细解析Java构造方法的特性和使用方法。 构造方法的特性: 1. 方法名与类名相同:构造方法的名字必须与类名完全相同,这是Java语法规定的一部分,便于编译器识别并自动调用构造方法。 2. 构造方法无返回类型:...
在JNI中访问Java构造方法,有助于我们创建和初始化Java对象,这对于处理一些特定场景如资源管理、对象实例化等特别有用。 首先,我们需要在Java类中声明native方法,并为其提供一个对应的C/C++函数签名。例如,如果...
本文件主要探讨了Java中带有不同构造方法的程序如何影响内存分析,这包括无参构造方法、带参数的构造方法以及它们在内存分配中的应用。 首先,让我们了解一下构造方法。构造方法是一种特殊的方法,它的名字与类名...
Java构造方法的作用总结 Java构造方法是Java语言中的一种特殊方法,它用于初始化新建的对象。构造方法的主要作用是对类进行初始化,它们的方法名必须与类名相同,并且不可以声明返回类型。下面是关于Java构造方法的...
JAVA构造方法详解 JAVA构造方法是一个特殊的方法,它用于初始化类的对象。构造方法的作用是对类进行初始化,如果你没有定义任何构造方法的形式,编译器会为你提供一个不带任何参数的构造函数,那么你产生类的对象时...
是我的博客配套的源代码,讲解Java的构造方法,和四种访问权限,也可以在博客评论区找我要,博客地址:https://blog.csdn.net/qq_41464123/article/details/107461710
Java构造方法是面向对象编程中一个至关重要的概念,它用于在创建对象时初始化对象的状态,即设置对象成员变量的初始值。构造方法的名称必须与类名完全相同,且不返回任何值,包括void关键字。Java中的构造方法是类的...
83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中...