【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?

简介: 【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?

什么是方法重载


A: 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。


举个例子

public class Overlode {
    //test方法第一次重载,没有参数
    void test1() {
        System.out.println("无参方法");
    }
    //test方法第二次重载,含一个整形参数
    void test2(int a) {
        System.out.println("一个参数方法" );
    }
    //test方法第三次重载,含两个整形参数
    void test3(int a,int b) {
        System.out.println("两个参数方法" );
    }
}


方法重载的好处


1)减轻了起名的麻烦


2)减轻了记名的麻烦


注意事项与使用细节


当使用方法重载时,要注意满足以下三点条件。


1)方法名必须相同


2)形参类型或个数或顺序,至少有一项不同


3)返回类型没有要求


什么是方法重写


A: 简单来说,方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称,返回类型,参数一样,那么我们就说子类的这个方法覆盖了父类的方法。


举个例子

public class Animal {
    public void cry() {
        System.out.println("动物叫!");
    }
}
public class Dog extends Animal {
    public void cry() {
        System.out.println("狗叫!");
    }
}


在这个例子中, Dog是Animal的子类,Dog的cry方法和Animal的cry方法的名称,返回类型,参数一样,这时我们就可以说Dog的cry方法,重写了Animal的cry方法。


注意事项与使用细节


当使用方法重写时,要注意满足以下三点条件。


1)子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一致


2)子类方法的返回类型和父类方法返回类型一样


3)子类方法不能缩小父类方法的访问权限


方法重载与方法重写的区别


image.png


方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。学好了重载和重写,才能更好的掌握多态! 方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。


总结


1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载。

2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写。

3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。


相关文章
|
8天前
|
Java 编译器 开发者
java方法重载详细说明
Java方法重载允许在同一类中定义多个同名但参数列表不同的方法,通过参数数量、类型或顺序的不同来区分。这提高了代码的可读性和灵活性。例如,在一个类中可以定义多个`add`方法,分别处理不同数量和类型的参数。重载的关键不在于返回类型或访问修饰符,而在于参数列表的差异。合理使用方法重载可以简化程序设计,使代码更加高效。
|
7天前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
24 2
|
1月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
1月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
3天前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!
|
27天前
|
Java 开发者 C++
|
30天前
|
存储 Java
Java面向对象面试题总结(上)
在Java中,重写(Override)与重载(Overload)是两个重要的概念,关联到方法的定义与调用。重写是指子类对继承自父类的方法进行新的实现,以便提供子类特有的行为,其关键在于方法签名一致但方法体不同。重载则允许在同一个类中定义多个同名方法,只要参数列表不同即可,以此提供方法调用的灵活性。重写关注多态性,而重载强调编译时多态。
20 1
|
19天前
|
存储 Java 数据库连接
Java编程之旅:从基础到高级,探索面向对象的力量
【8月更文挑战第31天】本文是一篇深入浅出的Java编程指南,旨在通过生动的例子和实际代码演示,带领读者从Java的基础语法起步,逐步深入到面向对象的核心概念,最后探讨如何在实际项目中应用这些知识。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和实用的技巧。
|
30天前
|
Java 数据安全/隐私保护
【Java 第五篇章】面向对象
封装隐藏对象内部细节,仅暴露出必要的接口,提升代码的安全性和可维护性。通过private修饰属性并提供公有的getter和setter方法实现。权限修饰符从private到public控制着访问范围,从类内到整个项目。封装可用于类及其内部结构。
14 0
|
1月前
|
存储 SQL 搜索推荐
一天十道Java面试题----第一天(面向对象-------》ArrayList和LinkedList)
这篇文章是关于Java面试的笔记,涵盖了面向对象、JDK/JRE/JVM的区别、`==`和`equals`、`final`关键字、`String`、`StringBuffer`和`StringBuilder`的区别、重载与重写、接口与抽象类、`List`与`Set`、`hashcode`与`equals`以及`ArrayList`和`LinkedList`的对比等十个主题。