JAVA面向对象 - 方法重载与覆盖

Posted 白客C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA面向对象 - 方法重载与覆盖相关的知识,希望对你有一定的参考价值。

方法重载

方法重载就是在类的同种实现方式,到底采用哪种方式,取决与调用者给出的参数。方法重载特点是方法名相同,方法的参数类型,个数,顺序至少有一项不同,方法返回类型可以不同,方法的修饰符可以不同,只是返回类型不一样,不能构成重载

 

实例

 1 package com.beekc.www;
 2 
 3 public class Beekc {
 4     public static void main(String[] args) {
 5         Max c = new Max();
 6         System.out.println("大的数(int型):" + c.add(2,1));
 7         System.out.println("大的数(float型):" + c.add(1.9f,0.3f));
 8     }
 9 }
10 
11 class Max
12 {
13     //定义方法
14     public int add(int a, int b)
15     {
16 
17         if(a>b){
18             return a;
19         }
20         else
21         {
22             return b;
23         }
24     }
25 
26     //重载方法
27     public float add(float a, float b)
28     {
29         if(a>b){
30             return a;
31         }
32         else
33         {
34             return b;
35         }
36     }
37 }

 

运行结果

 

方法覆盖

子类可以继承父类的属性和方法,这样可以提高代码的复用性,这个很号,但问题来了,如果父类与子类都定义一个叫cry的方法,那调用者调用此方法时是用哪个呢?规则是这样的,父类与子类都有这个方法时,子类的cry方法会覆盖父类的cry方法,当只有父类有这个方法,就直接调用父类的,子类也是相同的。

 

注意事项

Ⅰ.子类的方法的返回类型,参数方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。

Ⅱ.子类方法不能缩小父方法的访问权限。

 

实例

 1 package com.beekc.www;
 2 
 3 public class Beekc {
 4     public static void main(String[] args) {
 5         Cat cat = new Cat();
 6         cat.cry();
 7         Dog dog = new Dog();
 8         dog.cry();
 9     }
10 }
11 
12 class Animal
13 {
14     int age;
15     String name;
16     public void cry()
17     {
18         System.out.println("我是动物,系统不知道怎么叫!");
19     }
20 }
21 
22 class Cat extends Animal
23 {
24     public void cry()
25     {
26         System.out.println("我是猫,喵喵叫~");
27     }
28 }
29 
30 class Dog extends Animal
31 {
32 
33 }

 

运行结果

以上是关于JAVA面向对象 - 方法重载与覆盖的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE基础知识—面向对象(方法的重写与重载)

重写(覆盖,Override)和重载(Overload)的区别

Java面向对象---方法的创建与重载

面向对象重写(override)与重载(overload)区别

8.继承覆盖重载与多态

Java面向对象编程:封装,继承,多态