187页的20和21题 --P187E20

//Final and Private
/**
 * Exercise 20: (1) Show that @Override annotation solves the problem in this section.
 * 这部分讲的是final和private, 只要是private的方法, 实际上都是final的. 因为private方法是无法访问的,
 * 连访问都无法访问, 更不用说改变了. 所以, private method是"无法改变的".
 */

package reusing;

class P187{
	private final void f(){
		System.out.println("private final P187.f().");
	}
	private void g(){
		System.out.println("private P187.g().");
	}
	final void h(){
		System.out.println("final P187.h().");
	}
}

public class P187E20 extends P187{
	private final void f(){
		System.out.println("private final P187E20.f().");
	}
	private void g(){
		System.out.println("private P187E20.g().");
	}
	//!下面代码不能执行, 因为super的h()已经是final了, 在子类中是不能改变h()的.
	//即使使用了@Override也不行
	 /* final void h(){
	 *	System.out.println("final P187E20.g().");
	 * }
	*/
	//! @Override final void h(){	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		P187E20 x=new P187E20();
		x.f();
		x.g();

		P187 y=x; //这里有个upcast
		//无法编译下面代码, 
		//!y.f();
		//!y.g();
		//y.h()可以, 虽然h()是final--不可改变, 但是h()是可读的
		y.h();
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值