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 }

运行结果

原文地址:https://www.cnblogs.com/beekc/p/12326948.html

时间: 2024-12-10 07:40:49

JAVA面向对象 - 方法重载与覆盖的相关文章

Java面向对象----方法重载

方法重载(over load):方法名相同,参数列表不同,返回类型无关 package com.tanlei.newer; public class OverLoadDemo { public static void main(String[] args) { Printer printer=new Printer(1000); printer.print("hello"); printer.print(12); printer.print("hello", 12)

Java面向对象-方法的重载

Java面向对象-方法的重载 所谓方法的重载, 类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载: 上代码: 1 package com.java1234.chap03.sec03; 2 3 public class Demo01 { 4 5 int add(int a,int b){ 6 System.out.println("方法一"); 7 return a+b; 8 } 9 10 /** 11 * 方法的重载,参数个数不一样

Java面向对象-方法的值传递和引用传递

Java面向对象-方法的值传递和引用传递 方法的值传递: 值传递 在方法里改变变量的值 作用范围仅仅是方法里 对外面不影响: 上代码: 1 package com.java1234.chap03.sec03; 2 3 public class Person { 4 5 void speak(int age){ 6 System.out.println("我今年"+age+"岁了"); 7 age=24; // 作用范围是方法里 8 } 9 10 public sta

JAVA中方法重载,方法覆盖,方法继承等小结

1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类型了! 2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同. 三.方法的返回类型.修饰符可以相同,也可不同. 四.main方法也可以被重载

02-14 面向对象--方法重载、隐藏

在面向对象思想中,由于基本特性--继承所致,产生了子类继承父类的关系,所以出现重载方法. 由于子类对象同事“汇聚了”父类和子类的方法所有公共方法,而C#并未对子类和父类的方法名称过多的 加以限制,因此会出现一些问题. 如果子类中的某个方法与父类方法的签名一致(即方法名和方法参数一样),那当通过子类对象访问此方法时,访问的是子类方法还是父类方法? 这就需要先从子类方法和父类方法之间的关系说起,总的来说,子类方法和父类方法之间的关系可以概括为一下三种. 扩充:子类方法,父类没有: 重载:子类有父类的

方法重载和覆盖不一样

方法的重载的规则:方法名称一样,其他不一样 方法名称必须相同. 参数列表必须不同(个数不同.或类型不同.参数排列顺序不同等). 方法的返回类型可以相同也可以不相同. 仅仅返回类型不同不足以成为方法的重载. 参数列表不同包括:个数不同.类型不同和顺序不同. 仅仅参数变量名称不同是不可以的. 跟成员方法一样,构造方法也可以重载. 声明为final的方法不能被重载和覆盖.这个非常容易忽略 声明为static的方法可以被重载但不能覆盖(除非子类是静态类) 静态方法是可以重载,但不可以重写的(如果子类是静

Java面向对象-方法的定义及简单使用

Java面向对象之方法 方法是对象的一部分,也称为行为: 先来一个简单实例: 1 package com.java1234.chap03.sec03; 2 3 public class Person { 4 5 void speak(){ 6 System.out.println("我是张三"); 7 } 8 9 public static void main(String[] args) { 10 Person person=new Person(); 11 person.speak

Java笔记 —— 方法重载和方法重写

h2 { color: #4ABCDE } a { text-decoration: none !important } a:hover { color: red !important; text-decoration: underline !important } pre { border: solid 1px #CCCCCC; background-color: #F8F8F8; margin: 15px; overflow: auto; white-space: pre; font-siz

java 子类方法重载和重写区别

方法重写: * Override和Overload的区别?Overload能改变返回值类型吗? * overload可以改变返回值类型,只看参数列表 * 方法重写:子类中出现了和父类中方法声明一模一样的方法.与返回值类型有关,返回值是一致(或者是子父类)的 * 方法重载:本类中出现的方法名一样,参数列表不同的方法.与返回值类型无关. * 子类对象调用方法的时候: * 先找子类本身,再找父类.