关于JAVA重载的问题~!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JAVA重载的问题~!相关的知识,希望对你有一定的参考价值。

下面分别举一个例子来说明方法重载:
public class TestOverLoad
public static void main(String[] args)
Test test = new Test();
test.print(null);


class Test
public void print(String some)
System.out.println("String version print");

public void print(Object some)
System.out.println("Object version print");


该程序输出的结果是String version print。
请问下为什么是这个结果啊?
重载不是根据传入参数来打印结果吗?难道他们2个传入的参数不一样?
请赐教

当然不一样了,你先看main是主线程对吧?你在里边实例化test的时候它首先会自动调用构造方法,这里你没写构造方法,然后你再用text.print(null);调用Test类中的print方法,虽然重载是根据你传的参数类型、个数来判断该执行哪个方法,可是Object是String的父类,你在给它传null的同时他当然会自动调用String的方法,因为他的默认值就是null!!其实你完全可以自己想一下,你在写java代码的时候往往需要给String类型的变量赋值,如果你不赋值的话,打印出来的结果肯定为null 参考技术A 请注意这个并没有重载,虽然结果看起来是重载了。为什么呢?父类和子类的a()方法是不同的两个方法,你在子类中写a()方法,其实是写了一个新的方法,并不是像你想的,继承了父类的a()方法,然后重载了。
另外注意:父类和子类的方法不是重载,是覆盖。重载指的是在同一个类中,方法名相同,参数类型和个数不同的方法,这才叫重载。
Father
v
=
new
Children();
这样就测试出来了。这里就涉及了OO中的继承,多态特性了,楼主再找些相关书籍仔细体会一下。
参考技术B 因为String类是Object的子类,所以重载的时候按照子类的算。
给你写了一段实例程序如下:

public class Test
public static void print(SuperClass sc)
System.out.println("super class");


public static void print(Class1 c1)
System.out.println("class1");


public static void print(Class2 c2)
System.out.println("class2");


public static void main(String[] args)
SuperClass sc = new SuperClass();
Class1 c1 = new Class1();
SuperClass c2 = new Class2();

print(sc);
print(c1);
print(c2);



class SuperClass
SuperClass()




class Class1 extends SuperClass
Class1()
super();



class Class2 extends SuperClass
Class2()
super();



输出:
super class
class1
super class

不知明白否?本回答被提问者采纳
参考技术C 因为null可以当做String类型的值

String类型的默认值就是null

因为String是一个引用类型.

不同于Int.Double那些的值类型.

所以重载的时候判断参数就选择了再首位的public void print(String some)

如果你把String换成Int

那么就会执行public void print(Object some)

我认为是这样.
参考技术D 首先纠正一下,这叫方法的重写,不是重载,这是两个完全不同的概念
在就是这里子类重写了父类的方法
访问级别的限制一定不能比被重写的方法窄,可以比被重写方法的宽...

关于Java中的方法重载

public void amethod(int i, String s)
这个方法和
public void Amethod(int i, String s)
这个方法能发生发发重载吗??
我觉得不可以.可书上缺说这样可以发生 重载..

在java中,如果两个方法名相同,但参数项不同,那么可以认为一个方法是令一个方法的重载方法,此过程称为“方法重载”。
参数项不同:
①参数个数相同,类型不 同
②参数个数不同
尽信书则不如无书。
参考技术A 你的书上估计是错的,java中,不同的方法名就代表了不同的函数,要想发生重载,必须要是相同的方法名才行,重载的条件还有参数的数据类型或者是参数的个数不同,这样才能发生重载。 参考技术B 不能
java大小写敏感
你那属于不同方法名

以上是关于关于JAVA重载的问题~!的主要内容,如果未能解决你的问题,请参考以下文章

关于Java中的方法重载

关于Java方法重载

关于重写和重载

Java简单实验--关于课后提到的java重载函数的简单分析

在Java中,以下关于方法重载和方法重写描述正确的是?

关于Java中的继承,包括重写构造器访问权限构造过程等知识总结