java 重载和覆盖

重载overload 和 覆盖override 是多态的两种表现形式。

重载overload,发生在同一类中,相当于不同的方法,只是因为功能类似所以起了相同的名字,必须包含不同的参数可以使用不同的返回值类型。如代码:

 1 public class OverloadTest {
 2
 3     public void loadTest(){
 4         System.out.println("loadTest第一个");
 5     }
 6
 7     public void loadTest(String p_string){
 8         System.out.println("loadTest第二个");
 9     }
10
11     public int loadTest(int p_time){
12         System.out.println("loadTest第三个");
13         return p_time + 100;
14     }
15
16     public String loadTest(int p_time, String p_str){
17         System.out.println("loadTest第四个");
18         return p_str;
19     }
20
21 }

覆盖override,发生在子类中

先要创建一个父类 OverrideTest

1 public class OverrideTest {
2
3     public void test1(){
4         System.out.println("基类的方法");
5     }
6
7 }

再创建一个子类去继承父类,可以对父类中的方法进行覆盖,顺便把main函数也写一起了。

 1 public class OverrideExtends extends OverrideTest {
 2
 3     @Override
 4     public void test1() {
 5         // TODO Auto-generated method stub
 6 //        super.test1();
 7         System.out.println("子类继承之后覆盖后的方法");
 8     }
 9
10     public static void main(String[] args){
11
12         OverrideTest ot = new OverrideExtends();
13         ot.test1();
14
15     }
16
17 }

这样的话,运行了之后,结果为“子类继承之后覆盖后的方法”,即子类中通过覆盖的方式将父类中的Test1方法进行了重写,使用的时候,就直接执行了子类中的方法。

注意:

1. 重写的时候,方法名称必须相同。

2. 重写的时候,参数必须相同。

3. 重写的时候,返回值必须相同。(或者都没有)

时间: 2024-10-12 18:12:50

java 重载和覆盖的相关文章

Java重载和覆盖

重写 Overriding 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 1.参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载.2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.3.访问修饰符的限制,子类函数的访问修饰权限不能小于父类的(public>protected>default>private) 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常. 重载Over

Java之重载与覆盖

有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式.运行时,Java虚拟机先判断给定参数的类型,然后决定执行哪个println()方法(int char String等). 重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系.这里有两个问题需要注意: (1)       什么叫参数列表?参数列表

Java技术_Java千百问(0038)_java中重载和覆盖有什么关系

点击进入_更多_Java千百问 1.什么是重载 java的重载,简单说,就是方法有同样的名称,但是参数不相同.这样的同名不同参数的方法之间,互相称之为重载方法. 需要注意的是: 1. 方法名相同. 2. 参数不同,这里是说对应位置的参数类型至少有一个不同,当然List和List都是List,算作相同. 3. 返回值可以不同,可以相同. 例子: "` public class Test{ public void a() { System.out.println("a()");

java系列--重载和覆盖小结

继承中属性的隐藏和方法的覆盖      java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准      java中允许子类的变量与父类变量的类型完全不同,以修改后的数据类型为准java允许父类的变量被子类的常量隐藏,也允许父类的常量被子类的变量隐藏      java允许用实例成员变量来隐藏静态成员变量,也允许用静态成员变量来隐藏实例成员变量覆盖 覆盖必须满足两个条件:1.方法名称必须相同 2.方法的参数必须完全相同,包括参数个数.类型.顺序   

java中重载、覆盖和隐藏三者的区别分析

重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同 两同两小一大  注意:子类实例方法不能覆盖父类的

java的重载、覆盖和隐藏的区别

重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同 两同两小一大  注意:子类实例方法不能覆盖父类的

Java中方法的重载与覆盖(随笔01)

方法重载(Overlord) .方法重载:指在同一个类中,允许在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关(例如:构造方法重载). .参数列表:个数不同,数据类型不同,顺序不同: .重载方法调用:JVM通过方法的参数列表,调用不同的方法. 上面的三种方法在同一类中的前提下是,重载 方法覆盖(Override)(又叫方法重写) .方法覆盖:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表相同),会出现覆盖,重写效果.声明不变,重新实现. .注意事项 1.

Java基础知识(重载和覆盖)

重载(overload): 在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了. 即当函数同名时,只看参数列表.和返回值类型没关系. 重载使用的时候需要注意: 1.在使用重载时只能通过不同的参数样式.例如,不同的参数类型,不同的参数个数,不同的参数顺序. 2.方法的异常类型和数目不会对重载造成影响. 3.对于父类来说,子类可以重载与继承父类中的方法同名的方法,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重

java中方法的重载和覆盖分别要满足的条件

1.重载:遵循“两同三不同” 两同:同一个类中的同名方法 三不同:形参的类型,个数,顺序不同 特别提醒: 返回值不同构不能方法重载 形参名称不同构不成方法重载 2.覆盖(重写)的要求 子类方法的名称,返回类型必须与父类一致. 子类方法不能缩小父类方法的访问权限 子类方法不能抛出比父类方法更多的异常 方法覆盖只存在于子类和父类,同一个类中方法只能被重载 父类的静态方法不能被子类覆盖 子类可以定义与父类的静态方法同名的静态方法 父类的非静态方法不能被子类覆盖为静态方法 父类的私有方法不能被子类覆盖