- Base class constructor java
- Using the super Keyword to Call a Base Class Constructor in Java
- Exploring the Super Keyword
- Invoking Base Class Constructors with Super
- Understanding the Importance of Calling Superclass Constructors
- Things to Remember when Using Super
- Conclusion
- How to Use the super Keyword to Call a Base Class Constructor in Java
- Related Articles
- Training Options
Base class constructor java
Ok, this is a great article to understand how inheritance practically works. And in fact the order of variable initialization makes sense : Static variables are independent of any created object by definition (that is what they are used for). Therefore, they must be initialized before any object creation, as soon as the class is called. Otherwise it could create a conflict if there is any non-static variable that has «taken» the place of a static one. And it seems logical to initialize the parent class static variables before the child ones. Then, when every necessary static variable are initialized, it is time to initialize the non-static variables of the created object before using the constructor to create the object. And as a class is a «blueprint» of each object, you need to build the fondations (the parent class) before building the last bits (in the child class). Hence the order : 1.Base class static variable initialization 2.Child class static variable initialization 3.Base class non-static variable initialization 4.Base class constructor 5.Child class non-static variable initialization 6.Child class constructor I home my «mnemotechnic» explanation will be usefull and not too confusing. Thanks professor !
类的初始化 先于实例,基类(父类)的初始化先于派生类(子类), 类属性随类初始化而初始化(包含赋值初始化,static 初始化块,类初始化代码执行失败将会导致类无法被加载) 构造器—父类的构造器先于子类执行,(注意,子类的构造器第一行都是显示或隐式的调用父类构造器) 实例变量—父类的实例变量(继承到的)先于子类完成初始化,(执行顺序 遵循,构造器第一行代码完成后,即父类构造器调用返回,1,默认初始化成员(基本类型初始化为0,boolean-false,引用类型-null)2,执行声明变量时等于号后面的代码,还有初始化块的代码,顺序由代码编写自上而下执行,4,执行构造器剩余代码。) —final 实例变量,必须在实例初始化时赋值(即,1,声明时赋值,2,初始化块中赋值,3,构造器中赋值) —constant常量(psf),由编译器宏替换,字节码中不存在? —私有常量(private static final)和常量一个定位吗?? 目前个人的理解只能到这里了,如果有错误欢迎指正,欢迎大家补充,一起学习!
Using the super Keyword to Call a Base Class Constructor in Java
In Java’s object-oriented paradigm, inheritance plays a significant role, allowing developers to create classes that reuse, extend, and modify the behavior defined in other classes. To facilitate seamless interaction between a superclass and its subclass, Java provides the super keyword. This article will focus on understanding and effectively using the super keyword in Java to call a base class constructor
Exploring the Super Keyword
The super keyword in Java is a reference variable that is used to refer to the immediate parent class object. Whenever you create an instance of a subclass, an instance of the parent class is also created, which is referenced by the super keyword.
The super keyword serves three main purposes −
- It can be used to refer to the immediate parent class instance variable.
- It can be used to invoke the immediate parent class method.
- It can be used to invoke the immediate parent class constructor
In this article, we’ll delve into the third use: invoking a parent class constructor.
Invoking Base Class Constructors with Super
In Java, a constructor is a block of code that initializes the newly created object. A subclass inherits fields and methods from the superclass, but it cannot inherit the constructor. However, the subclass constructor can call the superclass constructor using the super keyword.
When creating an object of the subclass, the constructor of the superclass executes first, and then the constructor of the subclass. If the subclass constructor does not explicitly call the superclass constructor, the Java compiler automatically inserts a no-argument super() call. However, if the superclass does not have a no-argument constructor, the subclass must explicitly call one of the superclass constructors, using super.
class Superclass < int age; Superclass(int age) < this.age = age; >> class Subclass extends Superclass < Subclass(int age) < super(age); >>
In this example, Subclass calls the constructor of Superclass using super(age). This call must be the first statement in the Subclass constructor.
Understanding the Importance of Calling Superclass Constructors
Calling the superclass constructor is crucial in many cases. For instance, it allows the subclass to inherit and initialize state from the superclass. It also ensures that any initialization logic defined in the superclass constructor gets executed. This is especially important if the superclass is designed to work with subclasses or implements a «template method» design pattern.
Things to Remember when Using Super
While using the super keyword in Java, keep in mind the following points −
- First statement − The call to super() must be the first statement in each constructor
Conclusion
The super keyword in Java provides a powerful means of enhancing and controlling the behavior inherited from a superclass. By using super to call a base class constructor, you ensure that your subclasses are correctly initialized and that they fully benefit from the code defined in the superclass.
How to Use the super Keyword to Call a Base Class Constructor in Java
A derived Java class can call a constructor in its base class using the super keyword. In fact, a constructor in the derived class must call the super’s constructor unless default constructors are in place for both classes.
To understand how to use the super keyword to call a base class constructor, follow these 10 steps.
- Open your text editor and type in the following Java statements: The program defines two properties, firstName and lastName . Notice that the program follows the Javabean specification for defining a property, i.e., a private variable with getter and setter methods. Also note that the constructor requires two parameters, the first name and the last name.
- Save your file as Person.java .
- Open a command prompt and navigate to the directory containing your Java program. Then type in the command to compile the source and hit Enter .
- Create a new file in your text editor. Type in the following Java statements: The Employee class defines one property, empId . This property will contain the employee ID. Notice that the constructor in this class calls the constructor in the super class ( Person ). The first name and last name parameters are passed to the constructor.
- Save your file as Employee.java .
- Return to the command prompt. Then type in the command to compile the source and hit Enter .
- Now you will create an application to test your derived class. Create a new file in your text editor and type in the following Java statements: The program instantiates an Employee object and then calls the getFirstName and getLastName methods. The first name and last name parameters have been passed to the base constructor by the derived class constructor. The program also calls the getEmpId method in the Employee object.
- Save your file as UsesuperKeywordToCallBaseConstructor.java .
- Return to the command prompt. Then type in the command to compile the source and hit Enter .
- You will now test your program. Type in the command to run the Java runtime launcher and then hit Enter . Notice the output of the program verifies that the first name and the last name were successfully passed to the base class constructor by the Employee constructor.
Related Articles
- How to Check Object Type in Java
- How to Create a Jar File in Java
- How to Compile Packages in Java
- How to Throw an Exception in Java
- How to Create an Exception Class in Java
- How to Use the super Keyword to Call a Base Class Constructor in Java (this article)
- How to Use the Comparator.comparing Method in Java 8
- How to Use System.in in Java
- How to Call an Interface Method in Java
- How to Add a Time Zone in the Java 8 Date/Time API
- How to Rethrow an Exception in Java
- How to Use the instanceof Operator with a Generic Class in Java
- How to Instantiate an Object in Java
- How to Filter Distinct Elements from a Collection in Java 8
- How to Create a Derived Class in Java
- How to Skip Elements with the Skip Method in Java 8
- How to Create a Java Bean
- How to Implement an Interface in Java
- How to Compare Two Objects with the equals Method in Java
- How to Set PATH from JAVA_HOME
- How to Prevent Race Conditions in Java 8
- How to Write a Block of Code in Java
- How to Display the Contents of a Directory in Java
- How to Group and Partition Collectors in Java 8
- How to Create a Reference to an Object in Java
- How to Reduce the Size of the Stream with the Limit Method in Java 8
- How to Write an Arithmetic Expression in Java
- How to Format Date and Time in the Java 8 Date/Time API
- How to Use Comparable and Comparator in Java
- How to Break a Loop in Java
- How to Use the this Keyword to Call Another Constructor in Java
- How to Write a Unit Test in Java
- How to Declare Variables in Java
- How to Override Base Class Methods with Derived Class Methods in Java
- How to Use Serialized Objects in Java
- How to Write Comments in Java
- How to Implement Functional Interfaces in Java 8
- How to Write Type Parameters with Multiple Bounds in Java
- How to Add Type and Repeating Annotations to Code in Java 8
- How to Use Basic Generics Syntax in Java
- How to Map Elements Using the Map Method in Java 8
- How to Work with Properties in Java
- How to Write while and do while Loops in Java
- How to Use the finally Block in Java
- How to Write for-each Loops in Java
- How to Create a Method in Java
- How to Continue a Loop in Java
- How to Handle Java Files with Streams
- How to Create an Interface Definition in Java
- How Default Base Class Constructors Are Used with Inheritance