【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)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。


相关文章
|
21天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
21 1
|
1月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
24 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
37 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
37 4
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
2月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
23 0
|
2月前
|
Java C++
java方法重载
java方法重载
22 0
|
3月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
27 0
|
3月前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!