java方法重写的时候,一个调用父类还是子类方法的问题

本文通过一个具体的Java程序示例,详细解析了方法覆盖的概念及其工作原理。演示了如何通过不同类型的对象引用调用方法,并解释了实际执行的方法取决于对象实例所属的类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

package com.java.test;

public class t extends parent {

public void method1(int a, int c, string b) {

system.out.println("this is t.t1");

}

public static void main(string args[]) {

t t = new t();

t.method1(1, 1, "srx");

//在方法覆盖中,左右俩边分别为父类和子类的时候,以左边作为调用的入口,右边作为调用的实际调用执行的方法。

parent t1= new t();

//t1是parent的对象,t1调用的方法只能是parent的方法,但是实际调用是调用子类还是父类的方法,是看new谁,new谁就调用谁

t1.method1(0, 0, "");

//这里t new的是t,parent只是一个强制类型的转换。

parent t2= (parent)t;

t2.method1(0, 0, "");

//如果明确想调父类的方法,来个过渡方法,不能直接调用子类的方法t2,parent里面只有t1和t5

//只有子类的对象,才能调用子类的方法,以左边作为调用的入口,右边作为调用的实际调用执行的方法。

t.t2();

}

public void t2(){

super.method1(0, 0, "");

}

}

class parent {

void method1(int a, int b, string c) {

system.out.println("this is p.t1");

}

}

上面的程序在一个java类t里面。一句话,当左右类不同的时候,左边能够写出来的方法是左边类的方法,=右边是真正执行的方法所属于的类,也就是对象属于哪个类,new谁,执行谁的方法,如果进行了强制类型转换,对象是new谁的还是不变的。

执行后的结果为:

this is t.t1

this is t.t1

this is t.t1

this is p.t1

http://www.cnblogs.com/snowdrop/articles/1807828.html


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值