关于Java中重载的若干问题

一.问题引入

  今天看视频时偶然间看到了,说父类和子类间也可以重载,貌似和以前的观念有些冲突,就验证了下……

二.问题解决

  看如下代码:

public class Son extends Father {

	public void test(int i) {
		System.out.println("我是子类里的有参数test方法:"+i);
	}

	public static void main(String[] args) {
		Son son = new Son();
		son.test();
		son.test(3);
	}

}

class Father {
	void test() {
		System.out.println("我是父类里的无参数test方法");
	}

}

 三.结论

  a.在一个类里,方法名相同,参数不同是方法的重载,方法重写必须满足下列条件:
    (1) 子类的方法的名称及参数必须和所覆盖的方法相同
    (2) 子类的方法返回类型必须和所覆盖的方法相同
    (3) 子类方法不能缩小所覆盖方法的访问权限
    (4) 子类方法不能抛出比所覆盖方法更多的异常

  b.子类与父类间存在重载吗?  

    在子类中扩展一个与父类同名不同参数的方法不叫重写,应该叫叫重载;不过也有人不同意,认为这样写能表达出所谓“重载”的意思,但是按照重载概念(重载是在同一个类中多态性的表现),似乎不符合。 可以更深层的理解为,子类只是拥有了父类的这个方法(功能),而不是自己创建的功能。

  c.

    参数顺序不同但是参数类型顺序相同的话,不构成重载;参数顺序不同 且 参数类型顺序不同的话,也构成重载。

  

时间: 2024-09-22 10:23:05

关于Java中重载的若干问题的相关文章

java 中重载函数调用时出现的问题

Java 中重载函数很常见,比如JDK 中的的FileInputStream构造方法就有重载: FileInputStream(File file)  FileInputStream(String name) 但是有时候会出现如下问题:  报错信息为:The method write2File(boolean, File) is ambiguous for the type TestOverride   出现该问题的场景是:重载的两个函数中有实参为null,java编译器没法确定此处的null是

实例分析java中重载与重写的区别_java

本文以实例详细分析了Java中重载与重写的区别,感兴趣的朋友可以参考一下. 一.重载(Overloading): (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方

java中重载(overloading)与重写(overriding)

常见面试题是关于重载(overloading)方法和重写(overriding)方法的.  代码如下 复制代码  public class MethodOverrideVsOverload {     public boolean equals( MethodOverrideVsOverload other ) {       System.out.println("MethodOverrideVsOverload equals method reached" );       ret

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

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

java中重载,继承,重写和多态的区别_java

重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员. 2)重写是继承后重新实现父类的方法. 3)重载是在一个类里一系列参数不同名字相同的方法. 4)多态则是为了避免在父类里大量重载引起代码臃肿且难于维护. 网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法. 下面的例子包含了这四种实现: class Triangle extends Shape {  public int getSides() {   return 3;  }} class Rectang

怎样很好的将java中的构造重载学好(初学者)

问题描述 怎样很好的将java中的构造重载学好(初学者) 现在初学,但是在写代码的时候总是无法使用构造重载这种方法,并且在写代码的时候老是思绪混乱应该怎莫办??????? 解决方案 java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载,编译器会根据实际情况挑选出正确的方法,如果编译器找不到匹配的参数或者找出多个可能的匹配就会产生编译时错误,这个过程被称为重载的解析 1 普通方法的重载 普通方法的重载是Java实现多态技术的重要手段,为编程带来了很多便利

对象-Java中子类重载的问题

问题描述 Java中子类重载的问题 比如我现在又两个具有继承关系的类: 父类:Animal 子类:Dog 在父类中有一个方法eat() 在子类中,除了继承了父类的eat()方法外,我自己还写了一个eat()的重载方法:eat(String a) 然后创建对象: Animal a = new Dog(); 为什么在创建对象a后,调用eat方法时,不能调用eat(String a)方法,而只能调用eat()方法? 解决方案 我是初学者,我说说自己的理解哈.一个是eat(),一个是eat(String

Java千百问_05面向对象(010)_java中重载和覆盖有什么关系

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

Java中继承、多态、重载和重写介绍_java

什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果