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面向对象 - 方法重载与覆盖的主要内容,如果未能解决你的问题,请参考以下文章
重写(覆盖,Override)和重载(Overload)的区别