search
HomeJavajavaTutorialAn overview of hiding and overriding in Java and the differences between them

I have learned polymorphism in the past two days, which naturally involves the rewriting of methods. In the process of the author messing around with the code, I found that the error type mentioned "This static method cannot hide the instance method from Fu" (as shown below), so I learned that in addition to overwriting (rewriting), there is also hiding. After searching various information, I finally found a more detailed article, which solved a lot of my doubts. Forward it, you may want to come back and read it in the future.

An overview of hiding and overriding in Java and the differences between them

1. Compile-time type and run-time type

Java reference variables have two types, one is Compile-time type, one is the run-time type

Compile-time type: Determined by the type used when declaring the variable

Run-time type: Determined by the type of object pointed to by the variable

If the compile-time type and run-time type are inconsistent, so-called polymorphism will occur. Because a subclass is actually a special parent class, Java allows a subclass object to be directly assigned to a parent class reference variable without any type conversion, or is called upward conversion, which is automatically completed by the system.

For example, Father f = new Son(); Son is a subclass of Father

When the variable f is referenced, the compile-time type and the run-time type will be inconsistent. The compile-time operation is of the Father type. When it is of type Son

When the compile-time type and run-time type of the variable are inconsistent, when the instance of the object it refers to is accessed through the variable, the value of the instance variable is determined by the type in which the variable is declared.

When accessing a method of the object it refers to through a variable, the behavior of the method is determined by the actual type of the referenced object.

2. Hiding and covering

Overwriting: The subclass overrides the method of the parent class, requiring that the method name and parameter type are exactly the same (the parameters cannot It is a subclass), the return value and exception are smaller or the same as the parent class (that is, it is a subclass of the parent class), and the access modifier is larger than or the same as the parent class.

Override is for instance methods

Methods cannot be cross-covered: subclass instance methods cannot override static methods of parent classes;

                  Static methods of a class cannot override instance methods of the parent class (an error occurs during compilation)

Hide: The parent class and the subclass have attributes or methods with the same name (there is only one form of method hiding , that is, when the parent class and the subclass have the same static method), the attribute or method of the parent class with the same name disappears in form, but actually still exists.

Hiding is for static methods and member variables (static variables and instance variables)

(1) When hiding occurs, what class the declared type is, call Properties or methods of the corresponding class, and no dynamic binding will occur

(2) Properties can only be hidden, not overwritten

(3) Variables can be cross-hidden: sub Class instance variables/static variables can hide the instance/static variables of the parent class

3. The difference between hiding and overwriting

(1) The hidden attributes are in the child After the class is forced to be converted to the parent class, the attributes in the parent class are accessed

When there is no forced conversion, the subclass needs to access the attributes of the parent class using the super keyword

(2) For overridden methods, after the subclass is forced to convert to the parent class, the method of the subclass itself will still be called.

If the subclass wants to access the method of the parent class, it can use the super keyword

Related articles:

Overview of the deeper method of overriding equals in java

Introduction to overload and override in PHP and JAVA

The above is the detailed content of An overview of hiding and overriding in Java and the differences between them. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?Mar 17, 2025 pm 05:46 PM

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?Mar 17, 2025 pm 05:45 PM

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?Mar 17, 2025 pm 05:44 PM

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?Mar 17, 2025 pm 05:43 PM

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

How does Java's classloading mechanism work, including different classloaders and their delegation models?How does Java's classloading mechanism work, including different classloaders and their delegation models?Mar 17, 2025 pm 05:35 PM

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment