final方法覆盖与重载问题以及不同访问权限问题

首先看两个代码
建立一个worker类,类中声明了两个final修饰的方法,out1(),out()方法是private权限

class worker{
	protected int a;
	public void work() {
		println("work");
	}
	private final void  T() {
		println("worker T");
	}
	private final void out() {
		T();
		println("worker out");
	}
	private final void out1() {
		println("worker out1");
	}
}

建立一个boss类,该类继承了worker类。
在这个类中成功声明了一个out()和out1()方法,均为public。

class boss extends worker{
	public boss() {
		println("hello boss ");
	}
	private final void  T() {
		println("boss T");
	}
	public final void out() {
		T();
		println("boss out");
	}
	public final void out1() {
		println("boss out1");
	}
}

写一个测试类

		boss m=new boss();
		m.out();
		m.out1();
		worker n=m;//向上转型,可以不管
		//n.out();错误
		//n.out1();错误

输出结果为

hello boss
boss T
boss out
boss out1

可以看到两个类中有完全一样的T()方法

	private final void  T() {
		println("...T");
	}

但当你把private改为其他的public等时便会报错,这是为什么呢?
因为如果某方法为private,他就只是隐藏在类中的程序代码,只不过是在两个类中有了相同的名称而已。如果是public,protected,包访问权限的话,就不会出现只是相同名称的情况。
所以上面的T方法并没有发生覆盖,只是一个新的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅逼码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值