`

Java之方法重写、方法重载、多态

阅读更多
一、方法重写(Override)

子类可以重写父类的方法。
方法的返回值类型、参数类型、参数个数都不能改变,只能重写方法体。


方法的重写规则
- 参数列表必须完全与被重写方法的相同;
- 返回类型必须完全与被重写方法的返回类型相同;
- 访问权限不能比父类中被重写的方法的访问权限更低。
  例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
  解释:用于多态(父类引用子类对象)。
- 声明为final的方法不能被重写。
- 构造方法不能被重写。
- 如果不能继承一个方法,则不能重写这个方法。
  如:父类中 private 的方法不能被子类重写。
- 声明为static的方法不能被重写,但是能够被再次声明。
- 子类中重写的方法不能抛出比父类更广泛的异常。
  解释:用于多态(父类引用子类对象)。




二、方法重载(Overload)

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。
返回类型可以相同也可以不同。


方法的重载规则
-被重载的方法必须改变参数列表;

-被重载的方法可以改变返回类型;
-被重载的方法可以改变访问修饰符;
-被重载的方法可以声明新的或更广的检查异常;




三、多态(Polymorphism)

Polymorphism : the condition of occurring in several different forms.

- 父类可以引用不同的子类,这就是多态。

- 实现多态有三个必要条件:继承、重写、向上转型。

- 在Java中有两种形式可以实现多态:继承和接口。



注意:

1、父类的引用可以调用父类中定义的属性和方法(可能被子类重写),
   但不能引用子类自己定义的属性和方法。

2、子类的引用指向子类对象时,可以调用父类的方法。



例子:


public class A {
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    } 

}

public class B extends A{
    public String show(B obj){
        return ("B and B");
    }
    
    public String show(A obj){
        return ("B and A");
    } 
}

public class C extends B{

}

public class D extends B{

}

public class Test {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        C c = new C();
        D d = new D();
        
        System.out.println("1--" + a1.show(b));
        System.out.println("2--" + a1.show(c));
        System.out.println("3--" + a1.show(d));
        System.out.println("4--" + a2.show(b));
        System.out.println("5--" + a2.show(c));
        System.out.println("6--" + a2.show(d));
        System.out.println("7--" + b.show(b));
        System.out.println("8--" + b.show(c));
        System.out.println("9--" + b.show(d));      
    }
}




/*

1--A and A
2--A and A
3--A and D
4--B and A
5--B and A
6--A and D
7--B and B
8--B and B
9--A and D

*/











引用:
http://www.cnblogs.com/chenssy/p/3372798.html
http://www.runoob.com/java/java-override-overload.html















-









分享到:
评论

相关推荐

    java 重载,重写以及继承,多态的区别

    "java 重载,重写以及继承,多态的区别" Java 中的重载、重写、继承和多态是四个不同的概念,它们之间存在一定的关系,但也存在明显的区别。 重载(Overload) 重载是指在同一个类中可以定义多个同名的方法,但这些...

    Java中方法重写与方法重载的比较.pdf

    理解并熟练掌握方法重写和方法重载是Java编程中的基本技能,它们对于实现多态、代码复用以及提高程序的灵活性和可维护性至关重要。在实际编程中,应根据需求灵活运用这两个特性,以编写出高效且易于维护的代码。

    [Java]重载,重写以及继承,多态的区

    在Java编程语言中,重载、重写、继承与多态是四个非常核心的概念,它们在面向对象编程中扮演着至关重要的角色。接下来,我们将详细探讨这些概念,并通过实例加以说明。 ### 重载(Overload) 重载是指在同一个类中...

    重载,重写,覆盖,多态

    在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有区别,本文将详细解释这些概念,并探讨...

    Java语言中的 覆盖重载和多态

    方法重载是编译时多态,因为Java在编译时根据实际参数确定调用哪个重载方法。而方法覆盖则表现了两种多态性,如果对象引用的是本类实例,编译时多态;如果是子类实例,运行时多态。 综上所述,Java中的覆盖和重载...

    java 多态重载 PPT

    多态在Java中主要体现在方法的重载(Overloading)和覆盖(Overriding)上。 1. 多态(Polymorphism) 多态的概念指的是同一种行为可以有不同的表现形式。在Java中,多态主要通过继承和接口来实现。例如,`Person`...

    java多态的总结

    编译时多态主要体现在方法的重载(Overloading),即在同一个类中可以有多个同名方法,但参数列表不同。编译器会根据传入参数的类型和数量来决定调用哪个方法。运行时多态则基于方法的重写(Overriding),子类可以...

    Java 2023.7.12(方法重写/重载、多态、抽象类/方法、instanceof)

    在Java编程语言中,方法重写(Method Overriding)和重载(Method Overloading)、多态(Polymorphism)、抽象类(Abstract Class)与抽象方法(Abstract Method)以及`instanceof`关键字是核心的面向对象特性。...

    继承与多态,重载和重写

    【继承与多态】 继承是面向对象编程中的一个重要...而重载和重写则是实现多态的关键手段,允许我们在不改变接口的情况下,定制方法的行为。这些概念在实际开发中有着广泛的应用,极大地提高了代码的可读性和可维护性。

    [Java]重载重写以及继承多态的区别.doc

    ### Java中的重载、重写、继承与多态 #### 一、重载(Overloading) 在Java中,**重载**是指在一个类内可以有多个名称相同但参数列表不同的方法。这些方法可以通过不同的参数类型、数量或者顺序来进行区分。需要...

    对java中多态理解

    多态的实现是通过方法重载和方法重写来实现的。 在 Java 中,多态可以分为两种:编译时多态和运行时多态。编译时多态是通过方法重载来实现的,方法重载是指在同一个类中可以有多个同名的方法,但这些方法的参数列表...

    Java 多态应用,掌握多态

    6. ** finalize 方法**:虽然不是直接与多态相关的,但值得注意的是,Java中每个对象都有一个finalize()方法,这是垃圾收集器在回收对象前调用的,子类可以重写这个方法进行资源清理,但这并不保证一定会被调用,...

    Java基础之方法重写和多态示例

    Java基础之方法重写和多态示例 Java基础之方法重写和多态是Java面向对象程序设计的两个重要概念。方法重写是指子类提供了一个与父类相同的方法签名,但是子类中的方法可以有不同的实现。这使得子类可以根据自己的...

    java 重载,继承,重写和多态的区别. doc

    Java编程语言中的重载、继承、重写和多态是面向对象编程的四个核心概念,它们各自具有独特的功能和用途。 1. **重载(Overloading)**: 重载发生在同一个类内部,指的是可以有多个同名方法,但这些方法的参数列表...

    java多态实验

    - 静态多态(Static Polymorphism):主要通过方法重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。 - 动态多态(Dynamic Polymorphism):主要通过方法重写(Overriding)实现,子类...

    java多态机制

    本文将详细介绍Java中的多态机制,包括重写、重载、子类与父类的继承以及Java多态的应用等方面。 #### 二、多态的定义与重要性 多态性来源于希腊语“polymorphism”,意指“多种形式”。在面向对象编程中,多态是...

    java 多态的含义和例子经典讲解

    这主要体现在方法的重载(Overloading)和方法的重写(Overriding)上。 1. 方法的重载:在同一类中,方法名相同但参数列表不同(参数数量、类型或顺序不同)的方法称为重载方法。这使得我们可以根据传入的不同参数...

    Java多态,面向对象编程题demo.zip

    在Java中,多态性主要体现在方法的重写(Override)和重载(Overload)。通过多态,我们可以编写出更加灵活、可扩展的代码,提高程序的复用性和维护性。 首先,我们要理解什么是面向对象编程。面向对象编程(Object...

    java 多态的泛型实现

    在Java中,多态主要体现在两个方面:方法重载(Overloading)和方法重写(Overriding)。方法重载是指在一个类中可以有多个同名方法,但参数列表不同;方法重写则是在子类中重新定义父类已有的非私有方法,以提供...

Global site tag (gtag.js) - Google Analytics