This article brings you relevant knowledge about java. After the subclass inherits the parent class, you can write a method in the subclass with the same name and the same parameters as the parent class, so as to realize the function of the parent class. We call the overwriting of methods with the same name and parameters in a class called method rewriting. Let’s take a look at it together. I hope it will be helpful to everyone.
Recommended study: "java video tutorial"
1. Meaning
After a subclass inherits a parent class , you can write a method in the subclass with the same name and the same parameters as the parent class, thereby overriding the method with the same name and the same parameters in the parent class. We call this process override of the method
2. Why use method overriding
2.1 When the method of the parent class cannot meet the needs of the subclass, the method needs to be rewritten in the subclass
2.2 Question and analysis
For example, there is a parent class Peple and a subclass Chinese. There is a say() method in the parent class that outputs people talking. However, when I want the subclass to call it, it outputs Chinese people talking. It is very difficult. Obviously calling the method directly is not possible, so you need to rewrite the say method in the subclass
2.3 Sample code
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void say(){ System.out.println("人在说话"); } }
Chinese class
public class Chinese extends Peple{ public Chinese() { } @Override public void say() { System.out.println("中国人在说话"); } }
Test03 Class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); //当进行方法重写时,调用的是子类的say()方法 } }
2.4 Sample code running screenshot
3. How to use method overriding
3.1 Basic Syntax
@Override 权限修饰符 返回值类型 方法名(形参列表){ //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void }
3.2 Specific analysis
3.2.1 The access permissions of methods overridden by subclasses should be greater than or equal to the access permissions of parent class methods
a Sample code
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } //没有写访问权限的话,默认是default访问权限 void say(){ System.out.println("人在说话"); } }
Chinese class
public class Chinese extends Peple{ public Chinese(){ } //父类say方法的访问权限为default,子类say方法的访问权限为public, // 符合子类方法访问权限大于等于父类方法访问权限的要求 @Override public void say() { System.out.println("中国人在说话"); } }
Test03 class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); } }
b Sample code running screenshot
3.2.2 When the return value type of the parent class method is a basic data type, the return value type of the method overridden by the subclass is also the corresponding basic data type
a Sample code
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public double add(int a,int b){ return a+b; } }
Chinese class
public class Chinese extends Peple{ public Chinese(){ } @Override public double add(int a,int b) { return a+b+1; } }
Test03 class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); System.out.println("求和之和再加上1的结果为: "+c.add(2, 3)); } }
b Sample code running screenshot
3.2.3 When the return value type of the parent class method is void, the return value type of the method overridden by the subclass is also void
a Sample code
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void eat(){ System.out.println("人的主食一般是熟食"); } }
Chinese class
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Test03 class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Sample code running screenshot
3.2.4 When the parent When a class method is statically modified, subclasses cannot override the method
a Error example code
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public static void eat(){ System.out.println("人的主食一般是熟食"); } }
Chinese class
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Test03 Class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Sample code running screenshot
Error message given by idea when compiling
Given after forced running Error message
3.3 Some tips on method rewriting
3.3.1 Copying method
steps
1. First directly copy (Ctrl C) the method in the parent class that needs to be overridden by the subclass
2. Paste (Ctrl V) into the subclass
3 .Modify the functions in the subclass to facilitate the realization of requirements that cannot be achieved by the parent class
Operation screenshot display
##3.3.3 Shortcut key method
Steps
1. Move the mouse to the location where the overridden method should be generated
2. Press the Alt key and Insert key on the keyboard at the same time,
3. In the pop-up box, select Override Methods
4. After double-clicking, an interface will pop up. In the interface, select the method that needs to be overridden by the subclass
5. Click the OK button The required rewrite method will be generated later
6. Remove the automatically generated first line in the rewrite method, and then write the appropriate statement in its method body
Operation screenshot display
java video tutorial 》
The above is the detailed content of Complete mastery of method overriding in Java. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

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.

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function