java 重载 调用指定_java 方法重载的时候,同一个类,父子类,调用哪个方法的问题...

展开全部

package com.java.test;

public class Test extends Parent {

public static void main(String[] args) {

System.out.println("haha");

Test t= new Test();

t.t2(3);

}

public void t2(int a) {

System.out.println("t2的e68a84e8a2ad62616964757a686964616f31333363393564int a=="+a);

}

public void t2(double a) {

System.out.println("t2的double a=="+a);

}

}

class Parent {

}

5ec3a9a7c62c6c457d7abf73028d553d.gif

打印结果:

haha

t2的int a==3

2、父子类中,重载(不是覆盖)

难点:

区分当子类的对象,强制转换成父类的时候:重写(覆盖)与重载的区别。覆盖调用子类的方法,重载只调用父类的方法

情况一:若以父类A为入口,父类的对象a,

(1)若父类中有这个方法,就调用(父类的方法),

96d6b3eb4c89035bcfdb339f2032f09c.gif

cd1d6ba662bf149b3b2c09cc106e5844.gif代码

package com.java.test;

public class Test extends Parent {

public static void main(String[] args) {

System.out.println("haha");

Test t = new Test();

t.t2(3);

//这种情况下,区分重写(覆盖)的区别。覆盖调用子类的方法,重载只调用父类的方法

Parent t3 = (Parent) t;

t3.t2(3);

}

public void t2(int a) {

System.out.println("子类t2的int a==" + a);

}

}

class Parent {

public void t2(double a) {

System.out.println("父类t2的double a==" + a);

}

public void t2(String s){

System.out.println("父类t2的String s==" + s);

}

}

fe1c97b80853371599c285388f52fc80.gif

haha

子类t2的int a==3

父类t2的double a==3.0

(2)如果没有也不会调用子类的方法,只会出错。

624694c99aba1dd6e6cd3428cbfb8b54.gif

a10b43ae443ea53a47d2a4eef86cc82c.gif代码

class Parent {

public void t2(String s){

System.out.println("父类t2的String s==" + s);

}

8a18f3e7b44862874707b78451c35e70.gif

若父类中只有这个方法,他也不会调用子类的方法。只会在

Parent t3 = (Parent) t;

t3.t2(3);//此句报错,出错

截图如下:当以父类为入口的时候,下面这两个t2都是父类的方法。

93a124b2329dacf678834fd73a565b7b.png

7ce484b5d2a0657d2a63cc0021656f69.png

情况二:以子类为入口,

子类既能调用自己的重载的方法,又能调用父类的原来的方法,具体调用谁,看参数跟谁匹配,

如果都匹配,看与谁最匹配,所以我们写程序的时候,尽量把父类的重载的方法的参数列表尽量区分开。

如下图:

f3cf78aaa860d19a27f327a6958719e7.png

具体实际调用的时候,调用谁,看参数与谁最匹配,如果子类没有t2(int a)方法,他当然就会调用父类的方法了。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值